OGLplus  (0.59.0) a C++ wrapper for rendering APIs

c_realloc.hpp
Go to the documentation of this file.
1 
9 #ifndef EAGINE_MEMORY_C_REALLOC_HPP
10 #define EAGINE_MEMORY_C_REALLOC_HPP
11 
12 #include "byte_alloc.hpp"
13 #include <cassert>
14 #include <limits>
15 
16 namespace eagine::memory {
17 
18 // c_byte_reallocator
19 template <typename Policy = default_byte_allocator_policy>
20 class c_byte_reallocator
21  : public byte_allocator_impl<Policy, c_byte_reallocator> {
22 public:
23  using size_type = span_size_t;
24 
25  auto equal(byte_allocator* a) const noexcept -> bool override {
26  return dynamic_cast<c_byte_reallocator*>(a) != nullptr;
27  }
28 
29  auto max_size(size_type) noexcept -> size_type override {
30  return std::numeric_limits<size_type>::max();
31  }
32 
33  auto has_allocated(const owned_block&, size_type) noexcept
34  -> tribool override {
35  return indeterminate;
36  }
37 
38  auto allocate(size_type n, size_type a) noexcept -> owned_block override;
39 
40  void deallocate(owned_block&& b, size_type) noexcept override;
41 
42  auto can_reallocate(const owned_block&, size_type, size_type) noexcept
43  -> bool override {
44  return true;
45  }
46 
47  auto reallocate(owned_block&& b, size_type n, size_type a) noexcept
48  -> owned_block override;
49 };
50 
51 } // namespace eagine::memory
52 
53 #include <eagine/memory/c_realloc.inl>
54 
55 #endif // EAGINE_MEMORY_C_REALLOC_HPP
std::ptrdiff_t span_size_t
Signed span size type used by eagine.
Definition: types.hpp:36
constexpr static const indeterminate_t indeterminate
Constant representing unspecified tribool value.
Definition: tribool.hpp:24

Copyright © 2015-2021 Matúš Chochlík.
<chochlik -at -gmail.com>
Documentation generated on Tue Apr 13 2021 by Doxygen (version 1.8.17).