7 #ifndef LUCENEFACTORY_H
8 #define LUCENEFACTORY_H
10 #include <boost/make_shared.hpp>
11 #include <boost/version.hpp>
18 #if BOOST_VERSION <= 103800
19 return boost::shared_ptr<T>(
new T);
21 return boost::allocate_shared<T>(LuceneAllocator<T>());
25 template <
class T,
class A1>
28 #if BOOST_VERSION <= 103800
29 return boost::shared_ptr<T>(
new T(a1));
31 return boost::allocate_shared<T>(LuceneAllocator<T>(), a1);
35 template <
class T,
class A1,
class A2>
38 #if BOOST_VERSION <= 103800
39 return boost::shared_ptr<T>(
new T(a1, a2));
41 return boost::allocate_shared<T>(LuceneAllocator<T>(), a1, a2);
45 template <
class T,
class A1,
class A2,
class A3>
46 boost::shared_ptr<T>
newInstance(A1
const& a1, A2
const& a2, A3
const& a3)
48 #if BOOST_VERSION <= 103800
49 return boost::shared_ptr<T>(
new T(a1, a2, a3));
51 return boost::allocate_shared<T>(LuceneAllocator<T>(), a1, a2, a3);
55 template <
class T,
class A1,
class A2,
class A3,
class A4>
56 boost::shared_ptr<T>
newInstance(A1
const& a1, A2
const& a2, A3
const& a3, A4
const& a4)
58 #if BOOST_VERSION <= 103800
59 return boost::shared_ptr<T>(
new T(a1, a2, a3, a4));
61 return boost::allocate_shared<T>(LuceneAllocator<T>(), a1, a2, a3, a4);
65 template <
class T,
class A1,
class A2,
class A3,
class A4,
class A5>
66 boost::shared_ptr<T>
newInstance(A1
const& a1, A2
const& a2, A3
const& a3, A4
const& a4, A5
const& a5)
68 #if BOOST_VERSION <= 103800
69 return boost::shared_ptr<T>(
new T(a1, a2, a3, a4, a5));
71 return boost::allocate_shared<T>(LuceneAllocator<T>(), a1, a2, a3, a4, a5);
75 template <
class T,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6>
76 boost::shared_ptr<T>
newInstance(A1
const& a1, A2
const& a2, A3
const& a3, A4
const& a4, A5
const& a5, A6
const& a6)
78 #if BOOST_VERSION <= 103800
79 return boost::shared_ptr<T>(
new T(a1, a2, a3, a4, a5, a6));
81 return boost::allocate_shared<T>(LuceneAllocator<T>(), a1, a2, a3, a4, a5, a6);
85 template <
class T,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7>
86 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)
88 #if BOOST_VERSION <= 103800
89 return boost::shared_ptr<T>(
new T(a1, a2, a3, a4, a5, a6, a7));
91 return boost::allocate_shared<T>(LuceneAllocator<T>(), a1, a2, a3, a4, a5, a6, a7);
95 template <
class T,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
96 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)
98 #if BOOST_VERSION <= 103800
99 return boost::shared_ptr<T>(
new T(a1, a2, a3, a4, a5, a6, a7, a8));
101 return boost::allocate_shared<T>(LuceneAllocator<T>(), a1, a2, a3, a4, a5, a6, a7, a8);
105 template <
class T,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8,
class A9>
106 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)
108 #if BOOST_VERSION <= 103800
109 return boost::shared_ptr<T>(
new T(a1, a2, a3, a4, a5, a6, a7, a8, a9));
111 return boost::allocate_shared<T>(LuceneAllocator<T>(), a1, a2, a3, a4, a5, a6, a7, a8, a9);
118 boost::shared_ptr<T> instance(newInstance<T>());
119 instance->initialize();
123 template <
class T,
class A1>
126 boost::shared_ptr<T> instance(newInstance<T>(a1));
127 instance->initialize();
131 template <
class T,
class A1,
class A2>
132 boost::shared_ptr<T>
newLucene(A1
const& a1, A2
const& a2)
134 boost::shared_ptr<T> instance(newInstance<T>(a1, a2));
135 instance->initialize();
139 template <
class T,
class A1,
class A2,
class A3>
140 boost::shared_ptr<T>
newLucene(A1
const& a1, A2
const& a2, A3
const& a3)
142 boost::shared_ptr<T> instance(newInstance<T>(a1, a2, a3));
143 instance->initialize();
147 template <
class T,
class A1,
class A2,
class A3,
class A4>
148 boost::shared_ptr<T>
newLucene(A1
const& a1, A2
const& a2, A3
const& a3, A4
const& a4)
150 boost::shared_ptr<T> instance(newInstance<T>(a1, a2, a3, a4));
151 instance->initialize();
155 template <
class T,
class A1,
class A2,
class A3,
class A4,
class A5>
156 boost::shared_ptr<T>
newLucene(A1
const& a1, A2
const& a2, A3
const& a3, A4
const& a4, A5
const& a5)
158 boost::shared_ptr<T> instance(newInstance<T>(a1, a2, a3, a4, a5));
159 instance->initialize();
163 template <
class T,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6>
164 boost::shared_ptr<T>
newLucene(A1
const& a1, A2
const& a2, A3
const& a3, A4
const& a4, A5
const& a5, A6
const& a6)
166 boost::shared_ptr<T> instance(newInstance<T>(a1, a2, a3, a4, a5, a6));
167 instance->initialize();
171 template <
class T,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7>
172 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)
174 boost::shared_ptr<T> instance(newInstance<T>(a1, a2, a3, a4, a5, a6, a7));
175 instance->initialize();
179 template <
class T,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
180 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)
182 boost::shared_ptr<T> instance(newInstance<T>(a1, a2, a3, a4, a5, a6, a7, a8));
183 instance->initialize();
187 template <
class T,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8,
class A9>
188 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)
190 boost::shared_ptr<T> instance(newInstance<T>(a1, a2, a3, a4, a5, a6, a7, a8, a9));
191 instance->initialize();