00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00027 #if !BOOST_PP_IS_ITERATING && !defined(MPP_ProtocolClientSocketHandle_)
00028 #define MPP_ProtocolClientSocketHandle_ 1
00029
00030
00031 #include <boost/preprocessor/iteration/iterate.hpp>
00032 #include <boost/preprocessor/enum.hpp>
00033 #include <boost/preprocessor/cat.hpp>
00034
00035
00036 #elif BOOST_PP_IS_ITERATING //-
00037 //-
00038 // Local Macros
00039
00040 #define mpp_Arg(z,n,data) BOOST_PP_CAT(A,n) const & BOOST_PP_CAT(a,n)
00041 #define mpp_TemplateParameters() BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(), class A )
00042 #define mpp_MethodParameters() BOOST_PP_ENUM(BOOST_PP_ITERATION(), mpp_Arg, )
00043 #define mpp_CallParameters() BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(), a )
00044
00045
00046 #if BOOST_PP_ITERATION_FLAGS()==1 //-
00047 //-
00048 // senf::ProtocolClientSocketHandle<SocketProtocol>::
00049
00050
00051 template < mpp_TemplateParameters() >
00052 explicit ProtocolClientSocketHandle( mpp_MethodParameters() );
00053
00054
00055 #elif BOOST_PP_ITERATION_FLAGS()==2 //-
00056 //-
00057 // senf::ProtocolClientSocketHandle<SocketProtocol>::
00058
00059
00060 template <class SocketProtocol>
00061 template < mpp_TemplateParameters() >
00062 prefix_ senf::ProtocolClientSocketHandle<SocketProtocol>::
00063 ProtocolClientSocketHandle( mpp_MethodParameters() )
00064 : ClientSocketHandle<typename SocketProtocol::Policy>(
00065 std::auto_ptr<senf::SocketBody>(new ProtocolSocketBody<SocketProtocol>(false)))
00066 {
00067 this->protocol().init_client( mpp_CallParameters() );
00068 }
00069
00070
00071 #endif //-
00072 //-
00073 // Undefine local Macros
00074
00075 #undef mpp_Arg
00076 #undef mpp_TemplateParameters
00077 #undef mpp_MethodParameters
00078 #undef mpp_CallParameters
00079
00080
00081 #endif //-
00082 //-
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093