00001 #ifndef s11n_net_s11n_1_1_TAGS_HPP_INCLUDED 00002 #define s11n_net_s11n_1_1_TAGS_HPP_INCLUDED 1 00003 // Defines some "tag" structs for some functional composition experimentation. 00004 namespace s11n { 00005 00006 00007 00008 /** 00009 A tag type for serialization functors. 00010 */ 00011 struct serialize_f_tag {}; 00012 00013 /** 00014 A tag type for serialization functors which look like: 00015 00016 bool operator()() const 00017 */ 00018 struct serialize_nullary_f_tag : serialize_f_tag {}; 00019 00020 /** 00021 A tag type for serialization functors which look like: 00022 00023 bool operator()( NodeT &, SerializableT const & ) const 00024 */ 00025 struct serialize_binary_f_tag : serialize_f_tag {}; 00026 00027 /** 00028 A tag type for serialization functors which look like: 00029 00030 bool operator()( NodeT & ) const 00031 */ 00032 struct serialize_unary_node_f_tag : serialize_f_tag {}; 00033 00034 /** 00035 A tag type for serialization functors which look like: 00036 00037 bool operator()( SerializableT const & ) const 00038 */ 00039 struct serialize_unary_serializable_f_tag : serialize_f_tag {}; 00040 00041 00042 /** 00043 A tag type for deserialization functors. 00044 */ 00045 struct deserialize_f_tag {}; 00046 00047 /** 00048 A tag type for deserialization functors which look like: 00049 00050 bool operator()() const 00051 */ 00052 struct deserialize_nullary_f_tag : deserialize_f_tag {}; 00053 00054 /** 00055 A tag type for deserialization functors which look like: 00056 00057 bool operator()( NodeT const &, SerializableT & ) const 00058 */ 00059 struct deserialize_binary_f_tag : deserialize_f_tag {}; 00060 00061 /** 00062 A tag type for deserialization functors which look like: 00063 00064 SerializableT * operator()( NodeT const & ) const 00065 */ 00066 struct deserialize_unary_node_f_tag : deserialize_f_tag {}; 00067 00068 /** 00069 A tag type for deserialization functors which look like: 00070 00071 bool operator()( SerializableT & ) const 00072 */ 00073 struct deserialize_unary_serializable_f_tag : deserialize_f_tag {}; 00074 00075 00076 } // namespace s11n 00077 00078 00079 #endif // s11n_net_s11n_1_1_TAGS_HPP_INCLUDED 00080