From bb76e9388009ed0bb2512034f8cd48a7d19aabb3 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 4 Jun 2010 16:29:02 +0200 Subject: Next chunk of functionality --- odb/common.hxx | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 odb/common.hxx (limited to 'odb/common.hxx') diff --git a/odb/common.hxx b/odb/common.hxx new file mode 100644 index 0000000..5588f00 --- /dev/null +++ b/odb/common.hxx @@ -0,0 +1,43 @@ +// file : odb/common.hxx +// author : Boris Kolpackov +// copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC +// license : GNU GPL v2; see accompanying LICENSE file + +#ifndef ODB_COMMON_HXX +#define ODB_COMMON_HXX + +#include + +// Find id member. +// +struct id_member: traversal::class_, + traversal::data_member, + context +{ + id_member (context& c) + : context (c), m_ (0) + { + *this >> names_ >> *this; + } + + semantics::data_member* + member () const + { + return m_; + } + + virtual void + traverse (semantics::data_member& m) + { + if (m.count ("id")) + m_ = &m; + } + + using class_::traverse; + +private: + traversal::names names_; + semantics::data_member* m_; +}; + +#endif // ODB_COMMON_HXX -- cgit v1.1