diff options
Diffstat (limited to 'examples/cxx/serializer/polymorphism/supermen-simpl-mixin.hxx')
-rw-r--r-- | examples/cxx/serializer/polymorphism/supermen-simpl-mixin.hxx | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/examples/cxx/serializer/polymorphism/supermen-simpl-mixin.hxx b/examples/cxx/serializer/polymorphism/supermen-simpl-mixin.hxx new file mode 100644 index 0000000..04b8b18 --- /dev/null +++ b/examples/cxx/serializer/polymorphism/supermen-simpl-mixin.hxx @@ -0,0 +1,51 @@ +// file : examples/cxx/serializer/polymorphism/library-simpl-mixin.hxx +// author : Boris Kolpackov <boris@codesynthesis.com> +// copyright : not copyrighted - public domain + +#ifndef SUPERMEN_SIMPL_HXX +#define SUPERMEN_SIMPL_HXX + +#include "supermen.hxx" +#include "supermen-sskel.hxx" + +struct person_simpl: virtual person_sskel +{ + virtual void + pre (const person&); + + virtual std::string + name (); + +protected: + const person* person_; +}; + +struct superman_simpl: virtual superman_sskel, person_simpl +{ + virtual bool + can_fly (); +}; + +struct batman_simpl: virtual batman_sskel, superman_simpl +{ + virtual unsigned int + wing_span (); +}; + +struct supermen_simpl: virtual supermen_sskel +{ + virtual void + pre (const supermen&); + + virtual bool + person_next (); + + virtual const ::person& + person (); + +private: + const supermen* supermen_; + supermen::const_iterator i_; +}; + +#endif // SUPERMEN_SIMPL_HXX |