Coverage Report

Created: 2024-04-30 09:35

src/zserio/pmr/NewDeleteResource.h
Line
Count
Source
1
#ifndef ZSERIO_PMR_NEW_DELETE_RESOURCE_H_INC
2
#define ZSERIO_PMR_NEW_DELETE_RESOURCE_H_INC
3
4
#include <new>
5
6
#include "zserio/pmr/MemoryResource.h"
7
8
namespace zserio
9
{
10
namespace pmr
11
{
12
namespace detail
13
{
14
15
/**
16
 * Default memory resource which will be used by polymorphic allocators defined by zserio.
17
 */
18
class NewDeleteResource : public MemoryResource
19
{
20
private:
21
    void* doAllocate(size_t bytes, size_t) override
22
189
    {
23
189
        return ::operator new(bytes);
24
189
    }
25
26
    void doDeallocate(void* resource, size_t, size_t) override
27
189
    {
28
189
        ::operator delete(resource);
29
189
    }
30
31
    bool doIsEqual(const MemoryResource& other) const noexcept override
32
2
    {
33
2
        return this == &other;
34
2
    }
35
};
36
37
} // namespace detail
38
39
/**
40
 * Gets pointer to (default) new delete resource.
41
 */
42
MemoryResource* getNewDeleteResource() noexcept;
43
44
} // namespace pmr
45
} // namespace zserio
46
47
#endif // ZSERIO_PMR_NEW_DELETE_RESOURCE_H_INC