19 #ifndef INCLUDE_RCF_RCFCLIENT_HPP
20 #define INCLUDE_RCF_RCFCLIENT_HPP
22 #include <boost/mpl/eval_if.hpp>
23 #include <boost/mpl/bool_fwd.hpp>
24 #include <boost/shared_ptr.hpp>
25 #include <boost/utility/enable_if.hpp>
27 #include <RCF/CheckRtti.hpp>
28 #include <RCF/ClientStub.hpp>
29 #include <RCF/Export.hpp>
36 typedef boost::shared_ptr<ClientStub> ClientStubPtr;
37 typedef boost::shared_ptr<ServerBinding> ServerBindingPtr;
39 RCF_EXPORT
void setCurrentCallDesc(std::string& desc, RCF::MethodInvocationRequest& request,
const char * szFunc,
const char * szArity);
46 virtual ~I_RcfClient()
50 virtual ClientStub &getClientStub() = 0;
51 virtual const ClientStub &getClientStub()
const = 0;
54 virtual ServerBinding &getServerStub() = 0;
56 virtual ClientStubPtr getClientStubPtr()
const = 0;
57 virtual ServerBindingPtr getServerStubPtr()
const = 0;
60 typedef boost::shared_ptr<I_RcfClient> RcfClientPtr;
64 typedef char (&yes_type)[1];
65 typedef char (&no_type)[2];
67 template<
typename U>
static yes_type RCF_hasRcfClientTypedef(
typename U::RcfClientT *);
68 template<
typename U>
static no_type RCF_hasRcfClientTypedef(...);
73 typedef typename T::RcfClientT type;
86 typedef typename boost::mpl::if_c<
87 sizeof(yes_type) ==
sizeof(RCF_hasRcfClientTypedef<T>(0)),
89 Identity<T> >::type type0;
91 typedef typename type0::type type;
94 class default_ {
char a[1]; };
95 class defined_ {
char a[2]; };
96 template<
typename T>
class Dummy {};
100 #endif // ! INCLUDE_RCF_RCFCLIENT_HPP