1 |
|
|
#include "zserio/pmr/MemoryResource.h" |
2 |
|
|
|
3 |
|
|
#include "zserio/pmr/NewDeleteResource.h" |
4 |
|
|
|
5 |
|
|
#include <algorithm> |
6 |
|
|
|
7 |
|
|
namespace zserio |
8 |
|
|
{ |
9 |
|
|
namespace pmr |
10 |
|
|
{ |
11 |
|
|
|
12 |
|
|
namespace |
13 |
|
|
{ |
14 |
|
|
|
15 |
|
157 |
MemoryResource*& getCurrentDefaultResource() |
16 |
|
|
{ |
17 |
|
|
// static variable is in the function to support proper early initialization (before main) |
18 |
✓✓✓✗
|
157 |
static MemoryResource* defaultResource = getNewDeleteResource(); |
19 |
|
157 |
return defaultResource; |
20 |
|
|
} |
21 |
|
|
|
22 |
|
|
} // namespace |
23 |
|
|
|
24 |
|
154 |
MemoryResource* getDefaultResource() noexcept |
25 |
|
|
{ |
26 |
|
154 |
return getCurrentDefaultResource(); |
27 |
|
|
} |
28 |
|
|
|
29 |
|
3 |
MemoryResource* setDefaultResource(MemoryResource* resource) noexcept |
30 |
|
|
{ |
31 |
✓✓ |
3 |
MemoryResource* defaultResource = (resource != nullptr) ? resource : getNewDeleteResource(); |
32 |
|
3 |
std::swap(defaultResource, getCurrentDefaultResource()); |
33 |
|
3 |
return defaultResource; |
34 |
|
|
} |
35 |
|
|
|
36 |
|
|
} // namespace pmr |
37 |
|
|
} // namespace zserio |