From fe69aa1a2b29e577b86026f7bb56a19f5b3bdfef Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Tue, 30 Nov 2010 18:13:45 +0200 Subject: Add container example --- container/person.hxx | 108 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 container/person.hxx (limited to 'container/person.hxx') diff --git a/container/person.hxx b/container/person.hxx new file mode 100644 index 0000000..a36c0e8 --- /dev/null +++ b/container/person.hxx @@ -0,0 +1,108 @@ +// file : container/person.hxx +// author : Boris Kolpackov +// copyright : not copyrighted - public domain + +#ifndef PERSON_HXX +#define PERSON_HXX + +#include +#include +#include +#include + +#include + +#pragma db object +class person +{ +public: + person (const std::string& first, + const std::string& last) + : first_ (first), last_ (last) + { + } + + const std::string& + first () const + { + return first_; + } + + const std::string& + last () const + { + return last_; + } + + // Nicknames. + // + typedef std::vector name_list; + + const name_list& + nicknames () const + { + return nicknames_; + } + + name_list& + nicknames () + { + return nicknames_; + } + + // Emails. + // + typedef std::set email_set; + + const email_set& + emails () const + { + return emails_; + } + + email_set& + emails () + { + return emails_; + } + + // Age-to-weight map. + // + typedef std::map age_weight_map; + + const age_weight_map& + age_weight () const + { + return age_weight_; + } + + age_weight_map& + age_weight () + { + return age_weight_; + } + +public: + unsigned long + id () const + { + return id_; + } + +private: + friend class odb::access; + + person () {} + + #pragma db id auto + unsigned long id_; + + std::string first_; + std::string last_; + + name_list nicknames_; + email_set emails_; + age_weight_map age_weight_; +}; + +#endif // PERSON_HXX -- cgit v1.1