Menu

[r712]: / framework2 / trunk / cppcms / application_factory.h  Maximize  Restore  History

Download this file

86 lines (76 with data), 2.2 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#ifndef CPPCMS_APPLICATION_FACTORY_H
#define CPPCMS_APPLICATION_FACTORY_H
#include <cppcms/defs.h>
#include <memory>
namespace cppcms {
class application;
class CPPCMS_API application_factory {
public:
virtual std::auto_ptr<application> operator()() const = 0;
virtual ~application_factory();
};
namespace app { namespace details {
template<typename T>
class factory0 {
public:
virtual std::auto_ptr<application> operator()() const
{
return std::autp_ptr<application>(new T());
};
};
template<typename T,typename P1>
class factory1 {
P1 p1;
public:
factory1(P1 _p1) : p1(_p1) {}
virtual std::auto_ptr<application> operator()() const
{
return std::autp_ptr<application>(new T(P p1));
};
};
template<typename T,typename P1,typename P2>
class factory2 {
P1 p1;
P2 p2;
public:
factory1(P1 _p1,P2 _p2) : p1(_p1),p2(_p2) {}
virtual std::auto_ptr<application> operator()() const
{
return std::autp_ptr<application>(new T(p1,p2));
};
};
template<typename T,typename P1,typename P2,typename P3>
class factory3 {
P1 p1;
P2 p2;
P3 p3;
public:
factory1(P1 _p1,P2 _p2,P3 _p3) : p1(_p1),p2(_p2),p3(_p3) {}
virtual std::auto_ptr<application> operator()() const
{
return std::autp_ptr<application>(new T(p1,p2,p3));
};
};
} } // app::details
template<typename T>
std::auto_ptr<application_factory> simple_application_factory()
{
return std::autp_ptr<application_factory>(new app::details::factory0<T>());
}
template<typename T,typename P1>
std::auto_ptr<application_factory> simple_application_factory(P1 p1)
{
return std::autp_ptr<application_factory>(new app::details::factory1<T,P1>(p1));
}
template<typename T,typename P1,typename P2>
std::auto_ptr<application_factory> simple_application_factory(P1 p1,P2 p2)
{
return std::autp_ptr<application_factory>(new app::details::factory2<T,P1,P2>(p1,p2));
}
template<typename T,typename P1,typename P2,typename P3>
std::auto_ptr<application_factory> simple_application_factory(P1 p1,P2 p2,P3 p3)
{
return std::autp_ptr<application_factory>(new app::details::factory3<T,P1,P2,P3>(p1,p2,p3));
}
} // cppcms
#endif
MongoDB Logo MongoDB