xapian-core
1.4.27
api
smallvector.cc
Go to the documentation of this file.
1
4
/* Copyright (C) 2012,2013,2014 Olly Betts
5
*
6
* Permission is hereby granted, free of charge, to any person obtaining a copy
7
* of this software and associated documentation files (the "Software"), to
8
* deal in the Software without restriction, including without limitation the
9
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10
* sell copies of the Software, and to permit persons to whom the Software is
11
* furnished to do so, subject to the following conditions:
12
*
13
* The above copyright notice and this permission notice shall be included in
14
* all copies or substantial portions of the Software.
15
*
16
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
22
* IN THE SOFTWARE.
23
*/
24
25
#include <
config.h
>
26
27
#include "
api/smallvector.h
"
28
29
#include <algorithm>
30
31
void
32
Xapian::SmallVector_::do_reserve
(std::size_t n)
33
{
34
void
** blk =
new
void
* [n];
35
if
(
c
>
sizeof
(
p
) /
sizeof
(*
p
)) {
36
std::copy(static_cast<void **>(
p
[0]),
37
static_cast<void **>(
p
[1]),
38
blk);
39
p
[1] = blk +
40
(
static_cast<
void
**
>
(
p
[1]) - static_cast<void**>(
p
[0]));
41
delete
[]
static_cast<
void
**
>
(
p
[0]);
42
}
else
{
43
std::copy(
p
,
p
+
c
, blk);
44
p
[1] = blk +
c
;
45
}
46
p
[0] = blk;
47
}
config.h
Xapian::SmallVector_::c
std::size_t c
Definition:
smallvector.h:37
Xapian::SmallVector_::p
void * p[2]
Definition:
smallvector.h:38
Xapian::SmallVector_::do_reserve
void do_reserve(std::size_t n)
Definition:
smallvector.cc:32
smallvector.h
Append only vector of Xapian PIMPL objects.
Generated by
Doxygen 1.8.13