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 |
88 |