Zserio C++ runtime library  1.0.0
Built for Zserio 2.13.0
MemoryResource.cpp
Go to the documentation of this file.
2 
4 
5 #include <algorithm>
6 
7 namespace zserio
8 {
9 namespace pmr
10 {
11 
12 namespace
13 {
14 
15 MemoryResource*& getCurrentDefaultResource()
16 {
17  // static variable is in the function to support proper early initialization (before main)
18  static MemoryResource* defaultResource = getNewDeleteResource();
19  return defaultResource;
20 }
21 
22 } // namespace
23 
25 {
26  return getCurrentDefaultResource();
27 }
28 
30 {
31  MemoryResource* defaultResource = (resource != nullptr) ? resource : getNewDeleteResource();
32  std::swap(defaultResource, getCurrentDefaultResource());
33  return defaultResource;
34 }
35 
36 } // namespace pmr
37 } // namespace zserio
MemoryResource * getNewDeleteResource() noexcept
MemoryResource * getDefaultResource() noexcept
MemoryResource * setDefaultResource(MemoryResource *resource) noexcept