aboutsummaryrefslogtreecommitdiff
path: root/odb/relational
diff options
context:
space:
mode:
Diffstat (limited to 'odb/relational')
-rw-r--r--odb/relational/common.cxx14
-rw-r--r--odb/relational/common.hxx6
-rw-r--r--odb/relational/header.hxx25
-rw-r--r--odb/relational/inline.hxx8
-rw-r--r--odb/relational/mysql/context.cxx2
-rw-r--r--odb/relational/pgsql/context.cxx2
-rw-r--r--odb/relational/pgsql/header.cxx2
-rw-r--r--odb/relational/pgsql/schema.cxx12
-rw-r--r--odb/relational/pgsql/source.cxx16
-rw-r--r--odb/relational/schema.hxx24
-rw-r--r--odb/relational/source.hxx65
-rw-r--r--odb/relational/sqlite/context.cxx2
-rw-r--r--odb/relational/type-processor.cxx4
13 files changed, 96 insertions, 86 deletions
diff --git a/odb/relational/common.cxx b/odb/relational/common.cxx
index 2a4a461..ae2e1f4 100644
--- a/odb/relational/common.cxx
+++ b/odb/relational/common.cxx
@@ -25,7 +25,7 @@ namespace relational
}
query_columns::
- query_columns (semantics::class_& c) //@@ context::object
+ query_columns (semantics::class_& c) //@@ context::{cur,top}_object
: ptr_ (true), decl_ (false)
{
scope_ = "access::object_traits< " + c.fq_name () + " >::query_columns";
@@ -33,7 +33,7 @@ namespace relational
}
void query_columns::
- object (semantics::class_& c)
+ traverse_object (semantics::class_& c)
{
// We only want members for objects unless we are traversing a
// pointer, in which case we need the whole thing.
@@ -45,13 +45,13 @@ namespace relational
}
void query_columns::
- composite (semantics::data_member* m, semantics::class_& c)
+ traverse_composite (semantics::data_member* m, semantics::class_& c)
{
// Base type.
//
if (m == 0)
{
- object_columns_base::composite (m, c);
+ object_columns_base::traverse_composite (m, c);
return;
}
@@ -64,7 +64,7 @@ namespace relational
<< "struct " << name
<< "{";
- object_columns_base::composite (m, c);
+ object_columns_base::traverse_composite (m, c);
os << "};";
}
@@ -73,14 +73,14 @@ namespace relational
string old_scope (scope_);
scope_ += "::" + name;
- object_columns_base::composite (m, c);
+ object_columns_base::traverse_composite (m, c);
scope_ = old_scope;
}
}
bool query_columns::
- column (semantics::data_member& m, string const& col_name, bool)
+ traverse_column (semantics::data_member& m, string const& col_name, bool)
{
string name (public_name (m));
diff --git a/odb/relational/common.hxx b/odb/relational/common.hxx
index 1413e3f..8fc88e3 100644
--- a/odb/relational/common.hxx
+++ b/odb/relational/common.hxx
@@ -68,13 +68,13 @@ namespace relational
}
virtual void
- object (semantics::class_&);
+ traverse_object (semantics::class_&);
virtual void
- composite (semantics::data_member*, semantics::class_&);
+ traverse_composite (semantics::data_member*, semantics::class_&);
virtual bool
- column (semantics::data_member&, string const&, bool);
+ traverse_column (semantics::data_member&, string const&, bool);
protected:
bool ptr_;
diff --git a/odb/relational/header.hxx b/odb/relational/header.hxx
index 900fb45..5c0a00c 100644
--- a/odb/relational/header.hxx
+++ b/odb/relational/header.hxx
@@ -44,7 +44,7 @@ namespace relational
virtual void
traverse (type& c)
{
- bool obj (c.count ("object"));
+ bool obj (object (c));
// Ignore transient bases.
//
@@ -128,7 +128,7 @@ namespace relational
{
// Ignore transient bases.
//
- if (!c.count ("object"))
+ if (!object (c))
return;
if (first_)
@@ -187,10 +187,10 @@ namespace relational
}
virtual void
- composite (semantics::data_member* m, semantics::class_& c)
+ traverse_composite (semantics::data_member* m, semantics::class_& c)
{
- if (c_.count ("object"))
- object_members_base::composite (m, c);
+ if (object (c_))
+ object_members_base::traverse_composite (m, c);
else
{
// If we are generating traits for a composite value type, then
@@ -212,7 +212,7 @@ namespace relational
}
virtual void
- container (semantics::data_member& m, semantics::type& c)
+ traverse_container (semantics::data_member& m, semantics::type& c)
{
using semantics::type;
using semantics::class_;
@@ -222,9 +222,10 @@ namespace relational
//
bool base, abst;
- if (c_.count ("object"))
+ if (object (c_))
{
- base = context::object != &c_ || !m.scope ().count ("object");
+ base = cur_object != &c_ ||
+ !object (dynamic_cast<type&> (m.scope ()));
abst = abstract (c_);
}
else
@@ -342,7 +343,7 @@ namespace relational
{
semantics::class_& b (dynamic_cast<semantics::class_&> (m.scope ()));
- if (b.count ("object"))
+ if (object (b))
os << ": access::object_traits< " << b.fq_name () << " >::" <<
name;
else
@@ -751,10 +752,10 @@ namespace relational
if (c.file () != unit.file ())
return;
- if (c.count ("object"))
+ if (object (c))
traverse_object (c);
else if (comp_value (c))
- traverse_value (c);
+ traverse_composite (c);
}
virtual void
@@ -1072,7 +1073,7 @@ namespace relational
}
virtual void
- traverse_value (type& c)
+ traverse_composite (type& c)
{
string const& type (c.fq_name ());
diff --git a/odb/relational/inline.hxx b/odb/relational/inline.hxx
index 89fc720..9e0627a 100644
--- a/odb/relational/inline.hxx
+++ b/odb/relational/inline.hxx
@@ -43,7 +43,7 @@ namespace relational
{
// Ignore transient bases.
//
- if (!c.count ("object"))
+ if (!object (c))
return;
if (c.count ("callback"))
@@ -84,10 +84,10 @@ namespace relational
if (c.file () != unit.file ())
return;
- if (c.count ("object"))
+ if (object (c))
traverse_object (c);
else if (comp_value (c))
- traverse_value (c);
+ traverse_composite (c);
}
virtual void
@@ -239,7 +239,7 @@ namespace relational
}
virtual void
- traverse_value (type&)
+ traverse_composite (type&)
{
/*
string const& type (c.fq_name ());
diff --git a/odb/relational/mysql/context.cxx b/odb/relational/mysql/context.cxx
index 84f2bf6..8843fe0 100644
--- a/odb/relational/mysql/context.cxx
+++ b/odb/relational/mysql/context.cxx
@@ -124,7 +124,7 @@ namespace relational
{
// Ignore transient bases.
//
- if (!(c.count ("object") || context::comp_value (c)))
+ if (!(context::object (c) || context::comp_value (c)))
return;
if (c.count ("mysql-grow"))
diff --git a/odb/relational/pgsql/context.cxx b/odb/relational/pgsql/context.cxx
index 6c6c5a0..20dc460 100644
--- a/odb/relational/pgsql/context.cxx
+++ b/odb/relational/pgsql/context.cxx
@@ -113,7 +113,7 @@ namespace relational
{
// Ignore transient bases.
//
- if (!(c.count ("object") || context::comp_value (c)))
+ if (!(context::object (c) || context::comp_value (c)))
return;
if (c.count ("pgsql-grow"))
diff --git a/odb/relational/pgsql/header.cxx b/odb/relational/pgsql/header.cxx
index edf9355..1622aff 100644
--- a/odb/relational/pgsql/header.cxx
+++ b/odb/relational/pgsql/header.cxx
@@ -60,7 +60,7 @@ namespace relational
virtual void
container_public_extra_pre (semantics::data_member&)
{
- if (!c_.count ("object") || abstract (c_))
+ if (!object (c_) || abstract (c_))
return;
// Container statement names.
diff --git a/odb/relational/pgsql/schema.cxx b/odb/relational/pgsql/schema.cxx
index 0e66e79..761206e 100644
--- a/odb/relational/pgsql/schema.cxx
+++ b/odb/relational/pgsql/schema.cxx
@@ -134,7 +134,7 @@ namespace relational
}
virtual bool
- column (semantics::data_member& m, string const& name, bool)
+ traverse_column (semantics::data_member& m, string const& name, bool)
{
if (inverse (m))
return false;
@@ -186,7 +186,7 @@ namespace relational
}
virtual void
- container (semantics::data_member& m, semantics::type& t)
+ traverse_container (semantics::data_member& m, semantics::type& t)
{
using semantics::type;
using semantics::data_member;
@@ -208,7 +208,7 @@ namespace relational
{
object_columns_references ocr (e_, os_, name, "id");
string id_name (column_name (m, "id", "object_id"));
- ocr.column (m, id_name, true);
+ ocr.traverse_column (m, id_name, true);
}
// value
@@ -216,13 +216,13 @@ namespace relational
if (semantics::class_* cvt = comp_value_wrapper (vt))
{
object_columns_references ocr (e_, os_, name);
- ocr.traverse_composite (m, *cvt, "value", "value");
+ ocr.traverse (m, *cvt, "value", "value");
}
else
{
object_columns_references ocr (e_, os_, name, "value");
string const& value_name (column_name (m, "value", "value"));
- ocr.column (m, value_name, true);
+ ocr.traverse_column (m, value_name, true);
}
tables_.insert (name);
@@ -250,7 +250,7 @@ namespace relational
if (c.file () != unit.file ())
return;
- if (!c.count ("object") || abstract (c))
+ if (!object (c) || abstract (c))
return;
string const& name (table_name (c));
diff --git a/odb/relational/pgsql/source.cxx b/odb/relational/pgsql/source.cxx
index 331463d..5050315 100644
--- a/odb/relational/pgsql/source.cxx
+++ b/odb/relational/pgsql/source.cxx
@@ -105,7 +105,9 @@ namespace relational
struct statement_oids: object_columns_base, context
{
virtual bool
- column (semantics::data_member& m, std::string const&, bool first)
+ traverse_column (semantics::data_member& m,
+ std::string const&,
+ bool first)
{
if (!first)
os << ',' << endl;
@@ -933,7 +935,7 @@ namespace relational
<< "{";
instance<statement_oids> st;
- st->column (*id_m, "", true);
+ st->traverse_column (*id_m, "", true);
os << "};";
}
@@ -947,7 +949,7 @@ namespace relational
instance<statement_oids> st;
st->traverse (t);
- st->column (*id_m, "", false);
+ st->traverse_column (*id_m, "", false);
os << "};";
}
@@ -960,7 +962,7 @@ namespace relational
<< "{";
instance<statement_oids> st;
- st->column (*id_m, "", true);
+ st->traverse_column (*id_m, "", true);
os << "};";
}
@@ -1005,7 +1007,7 @@ namespace relational
virtual void
container_extra (semantics::data_member& m, semantics::type& t)
{
- if (!c_.count ("object") || abstract (c_))
+ if (!object (c_) || abstract (c_))
return;
string scope (scope_ + "::" + prefix_ + public_name (m) + "_traits");
@@ -1095,7 +1097,7 @@ namespace relational
comp_value_wrapper (container_kt (t)))
{
instance<statement_oids> st;
- st->traverse_composite (m, *ktc, "key", "key");
+ st->traverse (m, *ktc, "key", "key");
os << ",";
}
else
@@ -1113,7 +1115,7 @@ namespace relational
if (semantics::class_* vtc = comp_value_wrapper (vt))
{
instance <statement_oids> st;
- st->traverse_composite (m, *vtc, "value", "value");
+ st->traverse (m, *vtc, "value", "value");
}
else
os << oids[column_sql_type (m, "value").type];
diff --git a/odb/relational/schema.hxx b/odb/relational/schema.hxx
index 5c985da..47af95e 100644
--- a/odb/relational/schema.hxx
+++ b/odb/relational/schema.hxx
@@ -83,7 +83,7 @@ namespace relational
}
virtual void
- container (semantics::data_member& m, semantics::type& c)
+ traverse_container (semantics::data_member& m, semantics::type& c)
{
// Ignore inverse containers of object pointers.
//
@@ -167,7 +167,7 @@ namespace relational
if (c.file () != unit.file ())
return;
- if (!c.count ("object") || abstract (c))
+ if (!object (c) || abstract (c))
return;
string const& name (table_name (c));
@@ -208,7 +208,9 @@ namespace relational
}
virtual bool
- column (semantics::data_member& m, string const& name, bool first)
+ traverse_column (semantics::data_member& m,
+ string const& name,
+ bool first)
{
// Ignore inverse object pointers.
//
@@ -372,7 +374,7 @@ namespace relational
}
virtual void
- container (semantics::data_member& m, semantics::type& t)
+ traverse_container (semantics::data_member& m, semantics::type& t)
{
using semantics::type;
using semantics::data_member;
@@ -398,7 +400,7 @@ namespace relational
string id_name (column_name (m, "id", "object_id"));
{
instance<object_columns> oc ("id");
- oc->column (m, id_name, true);
+ oc->traverse_column (m, id_name, true);
}
// index (simple value)
@@ -411,7 +413,7 @@ namespace relational
instance<object_columns> oc ("index");
index_name = column_name (m, "index", "index");
- oc->column (m, index_name, true);
+ oc->traverse_column (m, index_name, true);
}
// key (simple or composite value)
@@ -425,13 +427,13 @@ namespace relational
if (semantics::class_* ckt = comp_value_wrapper (kt))
{
instance<object_columns> oc;
- oc->traverse_composite (m, *ckt, "key", "key");
+ oc->traverse (m, *ckt, "key", "key");
}
else
{
instance<object_columns> oc ("key");
string const& name (column_name (m, "key", "key"));
- oc->column (m, name, true);
+ oc->traverse_column (m, name, true);
}
}
@@ -443,13 +445,13 @@ namespace relational
if (semantics::class_* cvt = comp_value_wrapper (vt))
{
instance<object_columns> oc;
- oc->traverse_composite (m, *cvt, "value", "value");
+ oc->traverse (m, *cvt, "value", "value");
}
else
{
instance<object_columns> oc ("value");
string const& name (column_name (m, "value", "value"));
- oc->column (m, name, true);
+ oc->traverse_column (m, name, true);
}
}
@@ -520,7 +522,7 @@ namespace relational
if (c.file () != unit.file ())
return;
- if (!c.count ("object") || abstract (c))
+ if (!object (c) || abstract (c))
return;
string const& name (table_name (c));
diff --git a/odb/relational/source.hxx b/odb/relational/source.hxx
index c825159..a81ac3a 100644
--- a/odb/relational/source.hxx
+++ b/odb/relational/source.hxx
@@ -63,7 +63,9 @@ namespace relational
}
virtual bool
- column (semantics::data_member& m, string const& name, bool first)
+ traverse_column (semantics::data_member& m,
+ string const& name,
+ bool first)
{
semantics::data_member* im (inverse (m));
@@ -160,7 +162,7 @@ namespace relational
{
typedef object_joins base;
- //@@ context::object Might have to be create every time.
+ //@@ context::{cur,top}_object Might have to be created every time.
//
object_joins (semantics::class_& scope, bool query)
: query_ (query),
@@ -208,7 +210,9 @@ namespace relational
}
virtual bool
- column (semantics::data_member& m, string const& col_name, bool)
+ traverse_column (semantics::data_member& m,
+ string const& col_name,
+ bool)
{
semantics::class_* c (object_pointer (m.type ()));
@@ -398,7 +402,7 @@ namespace relational
virtual void
traverse (type& c)
{
- bool obj (c.count ("object"));
+ bool obj (object (c));
// Ignore transient bases.
//
@@ -455,7 +459,7 @@ namespace relational
virtual void
traverse (type& c)
{
- bool obj (c.count ("object"));
+ bool obj (object (c));
// Ignore transient bases.
//
@@ -513,7 +517,7 @@ namespace relational
virtual void
traverse (type& c)
{
- bool obj (c.count ("object"));
+ bool obj (object (c));
// Ignore transient bases.
//
@@ -564,7 +568,7 @@ namespace relational
virtual void
traverse (type& c)
{
- bool obj (c.count ("object"));
+ bool obj (object (c));
// Ignore transient bases.
//
@@ -588,7 +592,7 @@ namespace relational
container_traits (semantics::class_& c)
: object_members_base (true, true), c_ (c)
{
- if (c.count ("object"))
+ if (object (c))
scope_ = "access::object_traits< " + c.fq_name () + " >";
else
scope_ = "access::composite_value_traits< " + c.fq_name () + " >";
@@ -604,10 +608,10 @@ namespace relational
}
virtual void
- composite (semantics::data_member* m, semantics::class_& c)
+ traverse_composite (semantics::data_member* m, semantics::class_& c)
{
- if (c_.count ("object"))
- object_members_base::composite (m, c);
+ if (object (c_))
+ object_members_base::traverse_composite (m, c);
else
{
// If we are generating traits for a composite value type, then
@@ -624,7 +628,7 @@ namespace relational
}
virtual void
- container (semantics::data_member& m, semantics::type& t)
+ traverse_container (semantics::data_member& m, semantics::type& t)
{
using semantics::type;
@@ -633,9 +637,10 @@ namespace relational
//
bool base, abst;
- if (c_.count ("object"))
+ if (object (c_))
{
- base = context::object != &c_ || !m.scope ().count ("object");
+ base = cur_object != &c_ ||
+ !object (dynamic_cast<type&> (m.scope ()));
abst = abstract (c_);
}
else
@@ -773,7 +778,7 @@ namespace relational
instance<object_columns> t (table, false, false);
if (semantics::class_* ckt = comp_value_wrapper (*kt))
- t->traverse_composite (m, *ckt, "key", "key");
+ t->traverse (m, *ckt, "key", "key");
else
{
string const& col (column_qname (m, "key", "key"));
@@ -792,7 +797,7 @@ namespace relational
instance<object_columns> t (table, false);
if (semantics::class_* cvt = comp_value_wrapper (vt))
- t->traverse_composite (m, *cvt, "value", "value");
+ t->traverse (m, *cvt, "value", "value");
else
{
string const& col (column_qname (m, "value", "value"));
@@ -849,7 +854,7 @@ namespace relational
instance<object_columns> t (false, false);
if (semantics::class_* ckt = comp_value_wrapper (*kt))
- t->traverse_composite (m, *ckt, "key", "key");
+ t->traverse (m, *ckt, "key", "key");
else
{
t->column (m, "key", "", column_qname (m, "key", "key"));
@@ -867,7 +872,7 @@ namespace relational
instance<object_columns> t (false);
if (semantics::class_* cvt = comp_value_wrapper (vt))
- t->traverse_composite (m, *cvt, "value", "value");
+ t->traverse (m, *cvt, "value", "value");
else
{
t->column (m, "value", "", column_qname (m, "value", "value"));
@@ -1636,7 +1641,7 @@ namespace relational
}
virtual void
- container (semantics::data_member& m, semantics::type&)
+ traverse_container (semantics::data_member& m, semantics::type&)
{
string traits (prefix_ + public_name (m) + "_traits");
os << db << "::container_statements_impl< " << traits << " > " <<
@@ -1654,7 +1659,7 @@ namespace relational
}
virtual void
- container (semantics::data_member& m, semantics::type&)
+ traverse_container (semantics::data_member& m, semantics::type&)
{
if (first_)
{
@@ -1695,13 +1700,13 @@ namespace relational
}
virtual void
- composite_wrapper (semantics::data_member* m,
- semantics::class_& c,
- semantics::type* w)
+ traverse_composite_wrapper (semantics::data_member* m,
+ semantics::class_& c,
+ semantics::type* w)
{
if (m == 0)
{
- object_members_base::composite (m, c);
+ object_members_base::traverse_composite (m, c);
return;
}
@@ -1726,12 +1731,12 @@ namespace relational
obj_prefix_ += '.';
- object_members_base::composite (m, c);
+ object_members_base::traverse_composite (m, c);
obj_prefix_ = old;
}
virtual void
- container (semantics::data_member& m, semantics::type&)
+ traverse_container (semantics::data_member& m, semantics::type&)
{
using semantics::type;
@@ -1814,7 +1819,7 @@ namespace relational
}
virtual void
- simple (semantics::data_member& m)
+ traverse_simple (semantics::data_member& m)
{
if (!inverse (m))
{
@@ -1895,10 +1900,10 @@ namespace relational
if (c.file () != unit.file ())
return;
- if (c.count ("object"))
+ if (object (c))
traverse_object (c);
else if (comp_value (c))
- traverse_value (c);
+ traverse_composite (c);
}
virtual void
@@ -2807,7 +2812,7 @@ namespace relational
}
virtual void
- traverse_value (type& c)
+ traverse_composite (type& c)
{
string const& type (c.fq_name ());
string traits ("access::composite_value_traits< " + type + " >");
diff --git a/odb/relational/sqlite/context.cxx b/odb/relational/sqlite/context.cxx
index 4d00621..149cf0a 100644
--- a/odb/relational/sqlite/context.cxx
+++ b/odb/relational/sqlite/context.cxx
@@ -111,7 +111,7 @@ namespace relational
{
// Ignore transient bases.
//
- if (!(c.count ("object") || context::comp_value (c)))
+ if (!(context::object (c) || context::comp_value (c)))
return;
if (c.count ("sqlite-grow"))
diff --git a/odb/relational/type-processor.cxx b/odb/relational/type-processor.cxx
index e53126f..6a5d974 100644
--- a/odb/relational/type-processor.cxx
+++ b/odb/relational/type-processor.cxx
@@ -696,7 +696,7 @@ namespace relational
c = dynamic_cast<class_*> (unit.find (tn));
- if (c == 0 || !c->count ("object"))
+ if (c == 0 || !object (*c))
return 0;
t.set ("element-type", c);
@@ -1087,7 +1087,7 @@ namespace relational
virtual void
traverse (type& c)
{
- bool obj (c.count ("object"));
+ bool obj (object (c));
if (!(obj || comp_value (c)))
return;