@@ -19,289 +19,289 @@ namespace Lucene
19
19
public:
20
20
typedef Collection<TYPE> this_type;
21
21
typedef boost::shared_ptr<this_type> shared_ptr;
22
- typedef std::vector< TYPE, Allocator <TYPE> > collection_type;
22
+ typedef std::vector< TYPE, LuceneAllocator <TYPE> > collection_type;
23
23
typedef typename collection_type::iterator iterator;
24
24
typedef typename collection_type::const_iterator const_iterator;
25
25
typedef TYPE value_type;
26
-
26
+
27
27
virtual ~Collection ()
28
28
{
29
29
}
30
-
30
+
31
31
protected:
32
32
boost::shared_ptr<collection_type> container;
33
-
33
+
34
34
public:
35
35
static this_type newInstance (int32_t size = 0 )
36
36
{
37
37
this_type instance;
38
38
instance.container = Lucene::newInstance<collection_type>(size);
39
39
return instance;
40
40
}
41
-
41
+
42
42
template <class ITER >
43
43
static this_type newInstance (ITER first, ITER last)
44
44
{
45
45
this_type instance;
46
46
instance.container = Lucene::newInstance<collection_type>(first, last);
47
47
return instance;
48
48
}
49
-
49
+
50
50
void reset ()
51
51
{
52
52
resize (0 );
53
53
}
54
-
54
+
55
55
void resize (int32_t size)
56
56
{
57
57
if (size == 0 )
58
58
container.reset ();
59
59
else
60
60
container->resize (size);
61
61
}
62
-
62
+
63
63
int32_t size () const
64
64
{
65
65
return (int32_t )container->size ();
66
66
}
67
-
67
+
68
68
bool empty () const
69
69
{
70
70
return container->empty ();
71
71
}
72
-
72
+
73
73
void clear ()
74
74
{
75
75
container->clear ();
76
76
}
77
-
77
+
78
78
iterator begin ()
79
79
{
80
80
return container->begin ();
81
81
}
82
-
82
+
83
83
iterator end ()
84
84
{
85
85
return container->end ();
86
86
}
87
-
87
+
88
88
const_iterator begin () const
89
89
{
90
90
return container->begin ();
91
91
}
92
-
92
+
93
93
const_iterator end () const
94
94
{
95
95
return container->end ();
96
96
}
97
-
97
+
98
98
void add (const TYPE& type)
99
99
{
100
100
container->push_back (type);
101
101
}
102
-
102
+
103
103
void add (int32_t pos, const TYPE& type)
104
104
{
105
105
container->insert (container->begin () + pos, type);
106
106
}
107
-
107
+
108
108
template <class ITER >
109
109
void addAll (ITER first, ITER last)
110
110
{
111
111
container->insert (container->end (), first, last);
112
112
}
113
-
113
+
114
114
template <class ITER >
115
115
void insert (ITER pos, const TYPE& type)
116
116
{
117
117
container->insert (pos, type);
118
118
}
119
-
119
+
120
120
template <class ITER >
121
121
ITER remove (ITER pos)
122
122
{
123
123
return container->erase (pos);
124
124
}
125
-
125
+
126
126
template <class ITER >
127
127
ITER remove (ITER first, ITER last)
128
128
{
129
129
return container->erase (first, last);
130
130
}
131
-
131
+
132
132
void remove (const TYPE& type)
133
133
{
134
134
container->erase (std::remove (container->begin (), container->end (), type), container->end ());
135
135
}
136
-
136
+
137
137
template <class PRED >
138
138
void remove_if (PRED comp)
139
139
{
140
140
container->erase (std::remove_if (container->begin (), container->end (), comp), container->end ());
141
141
}
142
-
142
+
143
143
TYPE removeFirst ()
144
144
{
145
145
TYPE front = container->front ();
146
146
container->erase (container->begin ());
147
147
return front;
148
148
}
149
-
149
+
150
150
TYPE removeLast ()
151
151
{
152
152
TYPE back = container->back ();
153
153
container->pop_back ();
154
154
return back;
155
155
}
156
-
156
+
157
157
iterator find (const TYPE& type)
158
158
{
159
159
return std::find (container->begin (), container->end (), type);
160
160
}
161
-
161
+
162
162
template <class PRED >
163
163
iterator find_if (PRED comp)
164
164
{
165
165
return std::find_if (container->begin (), container->end (), comp);
166
166
}
167
-
167
+
168
168
bool contains (const TYPE& type) const
169
169
{
170
170
return (std::find (container->begin (), container->end (), type) != container->end ());
171
171
}
172
-
172
+
173
173
template <class PRED >
174
174
bool contains_if (PRED comp) const
175
175
{
176
176
return (std::find_if (container->begin (), container->end (), comp) != container->end ());
177
177
}
178
-
178
+
179
179
bool equals (const this_type& other) const
180
180
{
181
181
return equals (other, std::equal_to<TYPE>());
182
182
}
183
-
183
+
184
184
template <class PRED >
185
185
bool equals (const this_type& other, PRED comp) const
186
186
{
187
187
if (container->size () != other.container ->size ())
188
188
return false ;
189
189
return std::equal (container->begin (), container->end (), other.container ->begin (), comp);
190
190
}
191
-
191
+
192
192
int32_t hashCode ()
193
193
{
194
194
return (int32_t )(int64_t )container.get ();
195
195
}
196
-
196
+
197
197
void swap (this_type& other)
198
198
{
199
199
container.swap (other->container );
200
200
}
201
-
201
+
202
202
TYPE& operator [] (int32_t pos)
203
203
{
204
204
return (*container)[pos];
205
205
}
206
-
206
+
207
207
const TYPE& operator [] (int32_t pos) const
208
208
{
209
209
return (*container)[pos];
210
210
}
211
-
211
+
212
212
operator bool () const
213
213
{
214
214
return container;
215
215
}
216
-
216
+
217
217
bool operator ! () const
218
218
{
219
219
return !container;
220
220
}
221
-
221
+
222
222
bool operator == (const this_type& other)
223
223
{
224
224
return (container == other.container );
225
225
}
226
-
226
+
227
227
bool operator != (const this_type& other)
228
228
{
229
229
return (container != other.container );
230
230
}
231
231
};
232
-
232
+
233
233
template <typename TYPE>
234
234
Collection<TYPE> newCollection (const TYPE& a1)
235
235
{
236
236
Collection<TYPE> result = Collection<TYPE>::newInstance ();
237
237
result.add (a1);
238
238
return result;
239
239
}
240
-
240
+
241
241
template <typename TYPE>
242
242
Collection<TYPE> newCollection (const TYPE& a1, const TYPE& a2)
243
243
{
244
244
Collection<TYPE> result = newCollection (a1);
245
245
result.add (a2);
246
246
return result;
247
247
}
248
-
248
+
249
249
template <typename TYPE>
250
250
Collection<TYPE> newCollection (const TYPE& a1, const TYPE& a2, const TYPE& a3)
251
251
{
252
252
Collection<TYPE> result = newCollection (a1, a2);
253
253
result.add (a3);
254
254
return result;
255
255
}
256
-
256
+
257
257
template <typename TYPE>
258
258
Collection<TYPE> newCollection (const TYPE& a1, const TYPE& a2, const TYPE& a3, const TYPE& a4)
259
259
{
260
260
Collection<TYPE> result = newCollection (a1, a2, a3);
261
261
result.add (a4);
262
262
return result;
263
263
}
264
-
264
+
265
265
template <typename TYPE>
266
266
Collection<TYPE> newCollection (const TYPE& a1, const TYPE& a2, const TYPE& a3, const TYPE& a4, const TYPE& a5)
267
267
{
268
268
Collection<TYPE> result = newCollection (a1, a2, a3, a4);
269
269
result.add (a5);
270
270
return result;
271
271
}
272
-
272
+
273
273
template <typename TYPE>
274
274
Collection<TYPE> newCollection (const TYPE& a1, const TYPE& a2, const TYPE& a3, const TYPE& a4, const TYPE& a5, const TYPE& a6)
275
275
{
276
276
Collection<TYPE> result = newCollection (a1, a2, a3, a4, a5);
277
277
result.add (a6);
278
278
return result;
279
279
}
280
-
280
+
281
281
template <typename TYPE>
282
282
Collection<TYPE> newCollection (const TYPE& a1, const TYPE& a2, const TYPE& a3, const TYPE& a4, const TYPE& a5, const TYPE& a6, const TYPE& a7)
283
283
{
284
284
Collection<TYPE> result = newCollection (a1, a2, a3, a4, a5, a6);
285
285
result.add (a7);
286
286
return result;
287
287
}
288
-
288
+
289
289
template <typename TYPE>
290
290
Collection<TYPE> newCollection (const TYPE& a1, const TYPE& a2, const TYPE& a3, const TYPE& a4, const TYPE& a5, const TYPE& a6, const TYPE& a7, const TYPE& a8)
291
291
{
292
292
Collection<TYPE> result = newCollection (a1, a2, a3, a4, a5, a6, a7);
293
293
result.add (a8);
294
294
return result;
295
295
}
296
-
296
+
297
297
template <typename TYPE>
298
298
Collection<TYPE> newCollection (const TYPE& a1, const TYPE& a2, const TYPE& a3, const TYPE& a4, const TYPE& a5, const TYPE& a6, const TYPE& a7, const TYPE& a8, const TYPE& a9)
299
299
{
300
300
Collection<TYPE> result = newCollection (a1, a2, a3, a4, a5, a6, a7, a8);
301
301
result.add (a9);
302
302
return result;
303
303
}
304
-
304
+
305
305
template <typename TYPE>
306
306
Collection<TYPE> newCollection (const TYPE& a1, const TYPE& a2, const TYPE& a3, const TYPE& a4, const TYPE& a5, const TYPE& a6, const TYPE& a7, const TYPE& a8, const TYPE& a9, const TYPE& a10)
307
307
{
0 commit comments