aboutsummaryrefslogtreecommitdiff
path: root/examples/cxx/hybrid/custom/wildcard/body.hxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2009-03-16 08:16:43 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2009-03-16 08:16:43 +0200
commitbce9d5a76072ec697ef69021818aa68709036da5 (patch)
tree9ec56eff60abacaea121d1602a1e48388ca34216 /examples/cxx/hybrid/custom/wildcard/body.hxx
parentbe19f3aae4e16b4dc9c980cb9b53e807616662ef (diff)
Add support for type customization in C++/Hybrid
examples/cxx/hybrid/custom/wildcard/: new example
Diffstat (limited to 'examples/cxx/hybrid/custom/wildcard/body.hxx')
-rw-r--r--examples/cxx/hybrid/custom/wildcard/body.hxx76
1 files changed, 76 insertions, 0 deletions
diff --git a/examples/cxx/hybrid/custom/wildcard/body.hxx b/examples/cxx/hybrid/custom/wildcard/body.hxx
new file mode 100644
index 0000000..504e3ca
--- /dev/null
+++ b/examples/cxx/hybrid/custom/wildcard/body.hxx
@@ -0,0 +1,76 @@
+// file : examples/cxx/hybrid/custom/wildcard/body.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : not copyrighted - public domain
+
+#ifndef BODY_HXX
+#define BODY_HXX
+
+#include "email.hxx"
+
+namespace email
+{
+ // Custom email body type which can hold text or binary.
+ //
+ class body
+ {
+ public:
+ enum type
+ {
+ type_none,
+ type_text,
+ type_binary
+ };
+
+ body ()
+ : body_type_ (type_none), binary_ (0)
+ {
+ }
+
+ ~body ()
+ {
+ body_type (type_none);
+ }
+
+ type
+ body_type () const
+ {
+ return body_type_;
+ }
+
+ const std::string&
+ text () const
+ {
+ return text_;
+ }
+
+ void
+ text (const std::string& t)
+ {
+ body_type (type_text);
+ text_ = t;
+ }
+
+ const email::binary&
+ binary () const
+ {
+ return *binary_;
+ }
+
+ void
+ binary (email::binary* b)
+ {
+ body_type (type_binary);
+ binary_ = b;
+ }
+
+ private:
+ void
+ body_type (type t);
+
+ type body_type_;
+ std::string text_;
+ email::binary* binary_;
+ };
+}
+
+#endif // BODY_HXX