19 #ifndef INCLUDE_RCF_STUBFACTORY_HPP
20 #define INCLUDE_RCF_STUBFACTORY_HPP
22 #include <boost/shared_ptr.hpp>
24 #include <RCF/RcfClient.hpp>
25 #include <RCF/ServerStub.hpp>
26 #include <RCF/Tools.hpp>
31 typedef boost::shared_ptr<I_RcfClient> RcfClientPtr;
36 virtual ~StubFactory()
39 virtual RcfClientPtr makeServerStub() = 0;
42 template<
typename T,
typename I1>
43 class StubFactory_1 :
public StubFactory
46 RcfClientPtr makeServerStub()
48 boost::shared_ptr<T> tPtr(
new T );
50 boost::shared_ptr< RCF::I_Deref<T> > derefPtr(
51 new RCF::DerefSharedPtr<T>(tPtr) );
53 RcfClientPtr rcfClientPtr =
54 createServerStub( (I1 *) NULL, (T *) NULL, derefPtr);
60 template<
typename T,
typename I1,
typename I2>
61 class StubFactory_2 :
public StubFactory
64 RcfClientPtr makeServerStub()
66 boost::shared_ptr<T> tPtr(
new T );
68 boost::shared_ptr< RCF::I_Deref<T> > derefPtr(
69 new RCF::DerefSharedPtr<T>(tPtr) );
71 RcfClientPtr rcfClientPtr =
72 createServerStub( (I1 *) NULL, (T *) NULL, derefPtr);
75 RcfClientPtr mergeePtr = createServerStub(
80 rcfClientPtr->getServerStub().merge(mergeePtr);
87 template<
typename T,
typename I1,
typename I2,
typename I3>
88 class StubFactory_3 :
public StubFactory
91 RcfClientPtr makeServerStub()
93 boost::shared_ptr<T> tPtr(
new T );
95 boost::shared_ptr< RCF::I_Deref<T> > derefPtr(
96 new RCF::DerefSharedPtr<T>(tPtr) );
98 RcfClientPtr rcfClientPtr =
99 createServerStub( (I1 *) NULL, (T *) NULL, derefPtr);
102 RcfClientPtr mergeePtr = createServerStub(
107 rcfClientPtr->getServerStub().merge(mergeePtr);
111 RcfClientPtr mergeePtr = createServerStub(
116 rcfClientPtr->getServerStub().merge(mergeePtr);
123 template<
typename T,
typename I1,
typename I2,
typename I3,
typename I4>
124 class StubFactory_4 :
public StubFactory
127 RcfClientPtr makeServerStub()
129 boost::shared_ptr<T> tPtr(
new T );
131 boost::shared_ptr< RCF::I_Deref<T> > derefPtr(
132 new RCF::DerefSharedPtr<T>(tPtr) );
134 RcfClientPtr rcfClientPtr =
135 createServerStub( (I1 *) NULL, (T *) NULL, derefPtr);
138 RcfClientPtr mergeePtr = createServerStub(
143 rcfClientPtr->getServerStub().merge(mergeePtr);
147 RcfClientPtr mergeePtr = createServerStub(
152 rcfClientPtr->getServerStub().merge(mergeePtr);
156 RcfClientPtr mergeePtr = createServerStub(
161 rcfClientPtr->getServerStub().merge(mergeePtr);
170 #endif // ! INCLUDE_RCF_STUBFACTORY_HPP