emlabcpp
modern opinionated embedded C++ library
new_delete_resource.h
Go to the documentation of this file.
1 
24 #pragma once
25 
26 #include "./memory_resource.h"
27 
28 #include <cstddef>
29 #include <new>
30 
31 namespace emlabcpp::pmr
32 {
34 {
35  // TODO: maybe guarding in try/catch?
36 
37  void* allocate( std::size_t bytes, std::size_t alignment ) override
38  {
39  return ::operator new( bytes, std::align_val_t{ alignment } );
40  };
41 
42  result deallocate( void* p, std::size_t, std::size_t alignment ) override
43  {
44  ::operator delete( p, std::align_val_t{ alignment } );
45  return result::SUCCESS;
46  };
47 
48  [[nodiscard]] bool is_equal( memory_resource const& ) const noexcept override
49  {
50  return true;
51  };
52 
53  [[nodiscard]] bool is_full() const noexcept override
54  {
55  return false;
56  }
57 };
58 
60 {
61  static new_delete_resource_impl impl;
62  return impl;
63 }
64 } // namespace emlabcpp::pmr
Definition: memory_resource.h:33
MIT License.
Definition: aliases.h:36
memory_resource & new_delete_resource()
Definition: new_delete_resource.h:59
constexpr std::array< std::byte, N > bytes(Args const &... args)
Conveft the provided arguments into array of std::byte.
Definition: algorithm.h:524
Definition: new_delete_resource.h:34
bool is_equal(memory_resource const &) const noexcept override
Definition: new_delete_resource.h:48
bool is_full() const noexcept override
Definition: new_delete_resource.h:53
result deallocate(void *p, std::size_t, std::size_t alignment) override
Definition: new_delete_resource.h:42
void * allocate(std::size_t bytes, std::size_t alignment) override
Definition: new_delete_resource.h:37
result represents an result of some operation, as an alternative to returning just bool with true/fal...
Definition: result.h:42