74 typedef typename bits::enum_storage_type<T>::type st;
75 typedef void (flags::*bool_type)()
const;
76 void bool_type_true()
const {}
78 flags(): m_value(0) {}
79 flags(T t): m_value(static_cast<st>(t)) {}
80 friend flags operator|(
const flags & l,
const T & r) {
return l | flags(r);}
81 friend flags operator|(
const flags & l,
const flags & r) {
return flags(l.m_value | r.m_value);}
82 friend flags operator|(
const T & l,
const flags & r) {
return flags(l) | r;}
83 friend flags operator&(
const flags & l,
const flags & r) {
return flags(l.m_value & r.m_value);}
84 friend flags operator&(
const T & l,
const flags & r) {
return flags(flags(l).m_value & r.m_value);}
85 friend flags operator&(
const flags & l,
const T & r) {
return flags(l.m_value & flags(r).m_value);}
86 flags & operator|=(
const T & r) {
return *
this |= flags(r); }
87 flags & operator|=(
const flags & r) { m_value |= r.m_value;
return *
this; }
89 operator bool_type()
const {
return m_value?&flags::bool_type_true:NULL;}
90 flags operator~()
const {
return flags(~m_value);}
93 friend void serialize(D & dst,
const flags<T> & f) {
102 explicit flags(st value): m_value(value) {}
106 #define TPIE_DECLARE_OPERATORS_FOR_FLAGS(T) \
107 inline tpie::flags<T> operator|(const T & l, const T & r) {return tpie::flags<T>(l) | r;} \
108 inline tpie::flags<T> operator~(const T & l) {return ~tpie::flags<T>(l);}
113 #endif //#_TPIE_FLAGS_H
Binary serialization and unserialization.
void unserialize(S &src, foo &v)
Sample tpie::unserialize prototype.
void serialize(D &dst, const foo &v)
Sample tpie::serialize prototype.