00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef S11N_TEMPLATE_TYPE
00012 #error "You must define S11N_TEMPLATE_TYPE before including this file. e.g., to std::map or std::multimap."
00013 #endif
00014
00015 #ifndef S11N_TEMPLATE_TYPE_NAME
00016 #error "You must define S11N_TEMPLATE_TYPE_NAME before including this file. e.g., to \"map\" or \"multimap\"."
00017 #endif
00018
00019 #ifndef S11N_TEMPLATE_TYPE_PROXY
00020 # error "You must define S11N_TEMPLATE_TYPE_PROXY before including this file. e.g., ::s11n::map::map_serializable_proxy"
00021 #endif
00022
00023 #ifndef S11N_TEMPLATE_TYPE_DESER_PROXY
00024 # define S11N_TEMPLATE_TYPE_DESER_PROXY S11N_TEMPLATE_TYPE_PROXY
00025 #endif
00026
00027 #define S11N_TEMPLATE_TYPE_Q S11N_TEMPLATE_TYPE< KeyT, ValT >
00028
00029 namespace s11n {
00030
00031
00032
00033
00034
00035
00036
00037 template <typename KeyT, typename ValT>
00038 struct S11N_EXPORT_API s11n_traits < S11N_TEMPLATE_TYPE_Q >
00039 {
00040 typedef S11N_TEMPLATE_TYPE_Q serializable_type;
00041 typedef S11N_TEMPLATE_TYPE_PROXY serialize_functor;
00042 typedef S11N_TEMPLATE_TYPE_DESER_PROXY deserialize_functor;
00043 typedef ::s11n::default_cleanup_functor< S11N_TEMPLATE_TYPE_Q > cleanup_functor;
00044 typedef ::s11n::cl::object_factory<serializable_type> factory_type;
00045 static bool cl_reg_placeholder;
00046 static const std::string class_name( const serializable_type * instance_hint )
00047 {
00048 if( cl_reg_placeholder == true );
00049 return S11N_TEMPLATE_TYPE_NAME;
00050 }
00051 };
00052 template <
00053 typename KeyT,
00054 typename ValT
00055 >
00056 bool s11n_traits<
00057 S11N_TEMPLATE_TYPE_Q
00058 >::cl_reg_placeholder = (
00059 ::s11n::cl::classloader_register_base< S11N_TEMPLATE_TYPE_Q >(S11N_TEMPLATE_TYPE_NAME),
00060 true
00061 );
00062
00063
00064 }
00065
00066
00067 #undef S11N_TEMPLATE_TYPE_Q
00068 #undef S11N_TEMPLATE_TYPE_PROXY
00069 #undef S11N_TEMPLATE_TYPE_DESER_PROXY
00070 #undef S11N_TEMPLATE_TYPE_NAME
00071 #undef S11N_TEMPLATE_TYPE