]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/container/test/derived_from_memory_resource.hpp
11ec3762e7a0824797dd3689748bf2836b25e8c0
[ceph.git] / ceph / src / boost / libs / container / test / derived_from_memory_resource.hpp
1 //////////////////////////////////////////////////////////////////////////////
2 //
3 // (C) Copyright Ion Gaztanaga 2015-2015. Distributed under the Boost
4 // Software License, Version 1.0. (See accompanying file
5 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 //
7 // See http://www.boost.org/libs/container for documentation.
8 //
9 //////////////////////////////////////////////////////////////////////////////
10
11 #ifndef BOOST_CONTAINER_TEST_DERIVED_FROM_MEMORY_RESOURCE_HPP
12 #define BOOST_CONTAINER_TEST_DERIVED_FROM_MEMORY_RESOURCE_HPP
13
14 #include <boost/container/pmr/memory_resource.hpp>
15
16 class derived_from_memory_resource
17 : public boost::container::pmr::memory_resource
18 {
19 public:
20 explicit derived_from_memory_resource(unsigned i = 0u)
21 : id(i)
22 {}
23
24 virtual ~derived_from_memory_resource() BOOST_OVERRIDE
25 { destructor_called = true; }
26
27 virtual void* do_allocate(std::size_t bytes, std::size_t alignment) BOOST_OVERRIDE
28 {
29 do_allocate_called = true;
30 do_allocate_bytes = bytes;
31 do_allocate_alignment = alignment;
32 return do_allocate_return;
33 }
34
35 virtual void do_deallocate(void* p, std::size_t bytes, std::size_t alignment) BOOST_OVERRIDE
36 {
37 do_deallocate_called = true;
38 do_deallocate_p = p;
39 do_deallocate_bytes = bytes;
40 do_deallocate_alignment = alignment;
41 }
42
43 virtual bool do_is_equal(const boost::container::pmr::memory_resource& other) const BOOST_NOEXCEPT BOOST_OVERRIDE
44 {
45 do_is_equal_called = true;
46 do_is_equal_other = &other;
47 return static_cast<const derived_from_memory_resource&>(other).id == this->id;
48 }
49
50 void reset()
51 {
52 destructor_called = false;
53
54 do_allocate_return = 0;
55 do_allocate_called = false;
56 do_allocate_bytes = 0u;
57 do_allocate_alignment = 0u;
58
59 do_deallocate_called = false;
60 do_deallocate_p = 0;
61 do_deallocate_bytes = 0u;
62 do_deallocate_alignment = 0u;
63
64 do_is_equal_called = false;
65 do_is_equal_other = 0;
66 }
67 //checkers
68 static bool destructor_called;
69
70 unsigned id;
71 void *do_allocate_return;
72 mutable bool do_allocate_called;
73 mutable std::size_t do_allocate_bytes;
74 mutable std::size_t do_allocate_alignment;
75
76 mutable bool do_deallocate_called;
77 mutable void *do_deallocate_p;
78 mutable std::size_t do_deallocate_bytes;
79 mutable std::size_t do_deallocate_alignment;
80
81 mutable bool do_is_equal_called;
82 mutable const boost::container::pmr::memory_resource *do_is_equal_other;
83 };
84
85 bool derived_from_memory_resource::destructor_called = false;
86
87 #endif //#ifndef BOOST_CONTAINER_TEST_DERIVED_FROM_MEMORY_RESOURCE_HPP