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