Iros
 
Loading...
Searching...
No Matches
fallible_allocator.h
Go to the documentation of this file.
1#pragma once
2
7#include "di/util/std_new.h"
11
12namespace di::container {
14 static auto allocate(usize size, usize alignment) noexcept
16 auto* result =
17 ::operator new(size, std::align_val_t { container::max(alignment, alignof(void*)) }, std::nothrow);
18 if (!result) {
19 return vocab::Unexpected(platform::BasicError::NotEnoughMemory);
20 }
21 return AllocationResult<> { result, size };
22 }
23
24 static void deallocate(void* data, usize size, usize alignment) noexcept {
25 ::operator delete(data, size, std::align_val_t { container::max(alignment, alignof(void*)) });
26 }
27};
28}
29
30namespace di {
31using container::FallibleAllocator;
32}
Definition expected_forward_declaration.h:8
Definition sequence.h:12
constexpr auto size
Definition size.h:54
constexpr auto data
Definition data.h:51
constexpr auto max
Definition max.h:47
size_t usize
Definition integers.h:33
StatusCode< platform::GenericDomain > GenericCode
Definition status_code_forward_declaration.h:13
Unexpected(E &&) -> Unexpected< meta::UnwrapRefDecay< E > >
Definition zstring_parser.h:9
Definition allocation_result.h:7
Definition fallible_allocator.h:13
static void deallocate(void *data, usize size, usize alignment) noexcept
Definition fallible_allocator.h:24
static auto allocate(usize size, usize alignment) noexcept -> vocab::Expected< AllocationResult<>, vocab::GenericCode >
Definition fallible_allocator.h:14