diff options
author | Dominick Allen <djallen@librehumanitas.org> | 2024-10-16 22:25:08 -0500 |
---|---|---|
committer | Dominick Allen <djallen@librehumanitas.org> | 2024-10-16 22:25:08 -0500 |
commit | 53c4dcf374c66f1e9190f5a62a52d02fe11a69e6 (patch) | |
tree | ee40277c36fdba58fb06aca87b8ffa67ab5f8558 /source/fud_allocator.cpp | |
parent | f3ac764684c64fbdd2094853a80b23e570cd5d9c (diff) |
First crack at allocators.
Diffstat (limited to 'source/fud_allocator.cpp')
-rw-r--r-- | source/fud_allocator.cpp | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/source/fud_allocator.cpp b/source/fud_allocator.cpp new file mode 100644 index 0000000..b5af593 --- /dev/null +++ b/source/fud_allocator.cpp @@ -0,0 +1,48 @@ +/* + * libfud + * Copyright 2024 Dominick Allen + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "fud_allocator.hpp" + +namespace fud { + +Result<void*, FudStatus> FudAllocator::allocate(size_t bytes, size_t alignment) +{ + using RetType = Result<void*, FudStatus>; + static_cast<void>(alignment); + auto* pointer = static_cast<std::byte*>(fudAlloc(bytes)); + if (pointer == nullptr) { + return RetType::error(FudStatus::AllocFailure); + } + return RetType::okay(pointer); +} + +void FudAllocator::deallocate(void* pointer, size_t bytes, size_t alignment) +{ + static_cast<void>(bytes); + static_cast<void>(alignment); + fudFree(pointer); +} + +bool FudAllocator::isEqual(const Allocator& rhs) const +{ + /* Is this legit? Or is this a bogus check? */ + return &rhs == static_cast<const Allocator*>(this); +} + +FudAllocator globalFudAllocator{}; + +} // namespace fud |