aboutsummaryrefslogtreecommitdiff
path: root/examples/cxx/serializer/minimal/people-simpl-tiein.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'examples/cxx/serializer/minimal/people-simpl-tiein.hxx')
-rw-r--r--examples/cxx/serializer/minimal/people-simpl-tiein.hxx90
1 files changed, 90 insertions, 0 deletions
diff --git a/examples/cxx/serializer/minimal/people-simpl-tiein.hxx b/examples/cxx/serializer/minimal/people-simpl-tiein.hxx
new file mode 100644
index 0000000..ce7a70d
--- /dev/null
+++ b/examples/cxx/serializer/minimal/people-simpl-tiein.hxx
@@ -0,0 +1,90 @@
+// file : examples/cxx/serializer/people/people-simpl-tiein.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : not copyrighted - public domain
+
+#ifndef PEOPLE_SIMPL_HXX
+#define PEOPLE_SIMPL_HXX
+
+#include "people.hxx"
+#include "people-sskel.hxx"
+
+struct gender_simpl: gender_sskel
+{
+ gender_simpl ()
+ : gender_sskel (&base_impl_)
+ {
+ }
+
+ virtual void
+ pre (gender g)
+ {
+ base_impl_.pre (g == male ? "male" : "female");
+ }
+
+private:
+ xml_schema::string_simpl base_impl_;
+};
+
+struct person_simpl: person_sskel
+{
+ virtual void
+ pre (const person& p)
+ {
+ person_ = &p;
+ }
+
+ virtual const char*
+ first_name ()
+ {
+ return person_->first_name_;
+ }
+
+ virtual const char*
+ last_name ()
+ {
+ return person_->last_name_;
+ }
+
+ virtual ::gender
+ gender ()
+ {
+ return person_->gender_;
+ }
+
+ virtual unsigned short
+ age ()
+ {
+ return person_->age_;
+ }
+
+private:
+ const person* person_;
+};
+
+struct people_simpl: people_sskel
+{
+ virtual void
+ pre (const people& p)
+ {
+ i_ = 0;
+ people_ = &p;
+ }
+
+ virtual bool
+ person_next ()
+ {
+ return i_ < people_->size_;
+ }
+
+ virtual const ::person&
+ person ()
+ {
+ return people_->people_[i_++];
+ }
+
+private:
+ size_t i_;
+ const people* people_;
+};
+
+#endif // PEOPLE_SIMPL_HXX