7 #ifndef LUCENEFACTORY_H
8 #define LUCENEFACTORY_H
10 #include <boost/make_shared.hpp>
11 #include <boost/version.hpp>
17 #if BOOST_VERSION <= 103800
18 return boost::shared_ptr<T>(
new T);
20 return boost::make_shared<T>();
24 template <
class T,
class A1>
26 #if BOOST_VERSION <= 103800
27 return boost::shared_ptr<T>(
new T(a1));
29 return boost::make_shared<T>(a1);
33 template <
class T,
class A1,
class A2>
34 boost::shared_ptr<T>
newInstance(A1
const& a1, A2
const& a2) {
35 #if BOOST_VERSION <= 103800
36 return boost::shared_ptr<T>(
new T(a1, a2));
38 return boost::make_shared<T>(a1, a2);
42 template <
class T,
class A1,
class A2,
class A3>
43 boost::shared_ptr<T>
newInstance(A1
const& a1, A2
const& a2, A3
const& a3) {
44 #if BOOST_VERSION <= 103800
45 return boost::shared_ptr<T>(
new T(a1, a2, a3));
47 return boost::make_shared<T>(a1, a2, a3);
51 template <
class T,
class A1,
class A2,
class A3,
class A4>
52 boost::shared_ptr<T>
newInstance(A1
const& a1, A2
const& a2, A3
const& a3, A4
const& a4) {
53 #if BOOST_VERSION <= 103800
54 return boost::shared_ptr<T>(
new T(a1, a2, a3, a4));
56 return boost::make_shared<T>(a1, a2, a3, a4);
60 template <
class T,
class A1,
class A2,
class A3,
class A4,
class A5>
61 boost::shared_ptr<T>
newInstance(A1
const& a1, A2
const& a2, A3
const& a3, A4
const& a4, A5
const& a5) {
62 #if BOOST_VERSION <= 103800
63 return boost::shared_ptr<T>(
new T(a1, a2, a3, a4, a5));
65 return boost::make_shared<T>(a1, a2, a3, a4, a5);
69 template <
class T,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6>
70 boost::shared_ptr<T>
newInstance(A1
const& a1, A2
const& a2, A3
const& a3, A4
const& a4, A5
const& a5, A6
const& a6) {
71 #if BOOST_VERSION <= 103800
72 return boost::shared_ptr<T>(
new T(a1, a2, a3, a4, a5, a6));
74 return boost::make_shared<T>(a1, a2, a3, a4, a5, a6);
78 template <
class T,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7>
79 boost::shared_ptr<T>
newInstance(A1
const& a1, A2
const& a2, A3
const& a3, A4
const& a4, A5
const& a5, A6
const& a6, A7
const& a7) {
80 #if BOOST_VERSION <= 103800
81 return boost::shared_ptr<T>(
new T(a1, a2, a3, a4, a5, a6, a7));
83 return boost::make_shared<T>(a1, a2, a3, a4, a5, a6, a7);
87 template <
class T,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
88 boost::shared_ptr<T>
newInstance(A1
const& a1, A2
const& a2, A3
const& a3, A4
const& a4, A5
const& a5, A6
const& a6, A7
const& a7, A8
const& a8) {
89 #if BOOST_VERSION <= 103800
90 return boost::shared_ptr<T>(
new T(a1, a2, a3, a4, a5, a6, a7, a8));
92 return boost::make_shared<T>(a1, a2, a3, a4, a5, a6, a7, a8);
96 template <
class T,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8,
class A9>
97 boost::shared_ptr<T>
newInstance(A1
const& a1, A2
const& a2, A3
const& a3, A4
const& a4, A5
const& a5, A6
const& a6, A7
const& a7, A8
const& a8, A9
const& a9) {
98 #if BOOST_VERSION <= 103800
99 return boost::shared_ptr<T>(
new T(a1, a2, a3, a4, a5, a6, a7, a8, a9));
101 return boost::make_shared<T>(a1, a2, a3, a4, a5, a6, a7, a8, a9);
107 boost::shared_ptr<T> instance(newInstance<T>());
108 instance->initialize();
112 template <
class T,
class A1>
114 boost::shared_ptr<T> instance(newInstance<T>(a1));
115 instance->initialize();
119 template <
class T,
class A1,
class A2>
120 boost::shared_ptr<T>
newLucene(A1
const& a1, A2
const& a2) {
121 boost::shared_ptr<T> instance(newInstance<T>(a1, a2));
122 instance->initialize();
126 template <
class T,
class A1,
class A2,
class A3>
127 boost::shared_ptr<T>
newLucene(A1
const& a1, A2
const& a2, A3
const& a3) {
128 boost::shared_ptr<T> instance(newInstance<T>(a1, a2, a3));
129 instance->initialize();
133 template <
class T,
class A1,
class A2,
class A3,
class A4>
134 boost::shared_ptr<T>
newLucene(A1
const& a1, A2
const& a2, A3
const& a3, A4
const& a4) {
135 boost::shared_ptr<T> instance(newInstance<T>(a1, a2, a3, a4));
136 instance->initialize();
140 template <
class T,
class A1,
class A2,
class A3,
class A4,
class A5>
141 boost::shared_ptr<T>
newLucene(A1
const& a1, A2
const& a2, A3
const& a3, A4
const& a4, A5
const& a5) {
142 boost::shared_ptr<T> instance(newInstance<T>(a1, a2, a3, a4, a5));
143 instance->initialize();
147 template <
class T,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6>
148 boost::shared_ptr<T>
newLucene(A1
const& a1, A2
const& a2, A3
const& a3, A4
const& a4, A5
const& a5, A6
const& a6) {
149 boost::shared_ptr<T> instance(newInstance<T>(a1, a2, a3, a4, a5, a6));
150 instance->initialize();
154 template <
class T,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7>
155 boost::shared_ptr<T>
newLucene(A1
const& a1, A2
const& a2, A3
const& a3, A4
const& a4, A5
const& a5, A6
const& a6, A7
const& a7) {
156 boost::shared_ptr<T> instance(newInstance<T>(a1, a2, a3, a4, a5, a6, a7));
157 instance->initialize();
161 template <
class T,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
162 boost::shared_ptr<T>
newLucene(A1
const& a1, A2
const& a2, A3
const& a3, A4
const& a4, A5
const& a5, A6
const& a6, A7
const& a7, A8
const& a8) {
163 boost::shared_ptr<T> instance(newInstance<T>(a1, a2, a3, a4, a5, a6, a7, a8));
164 instance->initialize();
168 template <
class T,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8,
class A9>
169 boost::shared_ptr<T>
newLucene(A1
const& a1, A2
const& a2, A3
const& a3, A4
const& a4, A5
const& a5, A6
const& a6, A7
const& a7, A8
const& a8, A9
const& a9) {
170 boost::shared_ptr<T> instance(newInstance<T>(a1, a2, a3, a4, a5, a6, a7, a8, a9));
171 instance->initialize();
Definition: AbstractAllTermDocs.h:12
boost::shared_ptr< T > newLucene()
Definition: LuceneFactory.h:106
boost::shared_ptr< T > newInstance()
Definition: LuceneFactory.h:16