TheAtlasEngine
 
Loading...
Searching...
No Matches
core.hpp
1#pragma once
2#include <memory>
3#include <spdlog/common.h>
4#include <core/utilities/memory.hpp>
5
6namespace atlas {
7
11 template<typename T>
12 using strong_ref = memory::strong_ptr<T>;
13
24 template<typename T, typename... Args>
25 strong_ref<T> create_strong_ref(
26 std::pmr::polymorphic_allocator<> p_allocator,
27 Args&&... args) {
28 return memory::make_strong_ptr<T>(p_allocator,
29 std::forward<Args>(args)...);
30 }
31
35 template<typename T>
36 using optional_ref = memory::optional_ptr<T>;
37
41 template<typename T>
42 using ref = std::shared_ptr<T>;
43
52 template<typename T, typename... Args>
53 constexpr ref<T> create_ref(Args&&... args) {
54 return std::make_shared<T>(std::forward<Args>(args)...);
55 }
56
60 template<typename T>
61 using scope = std::unique_ptr<T>;
62
71 template<typename T, typename... Args>
72 constexpr scope<T> create_scope(Args&&... args) {
73 return std::make_unique<T>(std::forward<Args>(args)...);
74 }
75
76};