Hubris Engine Dev
A Project to learn and get into Game Engine developement.
 
Loading...
Searching...
No Matches
Memory.h File Reference
#include <memory>
#include <version>
#include <cstddef>
#include <new>
#include <tuple>
#include <utility>
#include <type_traits>
#include <algorithm>
+ Include dependency graph for Memory.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  Hubris::Block
 
struct  Hubris::SharedBlock
 Shared blocks are thread shared blocks. More...
 
struct  Hubris::Arena
 
class  Hubris::Memory
 
struct  Hubris::remove_all_pointers< T >
 
struct  Hubris::remove_all_pointers< T * >
 
struct  Hubris::remove_all_pointers< T *const >
 
struct  Hubris::remove_all_pointers< T *volatile >
 
struct  Hubris::remove_all_pointers< T *const volatile >
 
struct  Hubris::ControlBlock
 
struct  Hubris::Shared< T >
 
struct  Hubris::Weak< T >
 
struct  Hubris::Handle< T >
 
class  Hubris::Observer< T >
 

Namespaces

namespace  Hubris
 The Hubris Engine main namespace.
 

Concepts

concept  Hubris::Castable
 
concept  Hubris::PolymorphicConvertible
 
concept  Hubris::SafelyUpcastable
 
concept  Hubris::SameUnqualifiedType
 
concept  Hubris::CompatibleHandle
 
concept  Hubris::IsType
 

Typedefs

template<typename T>
using Hubris::remove_all_pointers_t = typename remove_all_pointers<T>::type
 
template<typename T>
using Hubris::observer_ptr = Observer<T>
 

Functions

template<typename T>
consteval size_t Hubris::padded_size ()
 
template<typename T, typename F>
void Hubris::Traverse (T &&container, F &&func)
 
template<typename T>
constexpr ControlBlockHubris::CoAllocate_Unsafe ()
 Allocates memory for the ControlBlock and T but does not construct T. This can lead to UB if not used carefully.
 
template<typename T, typename ... Args>
constexpr void Hubris::Construct_T_Inplace (void *placement, Args &&...args)
 Constructs any object at location (placment new) with the specified arguments.
 
template<typename T, typename ... Args>
constexpr ControlBlockHubris::CoAllocate (Args &&...args)
 Allocates and constructs both the ControlBlock and the Object T and returns the instanciated controlblock.
 
template<typename T>
 Hubris::Handle (T *) -> Handle< T >
 
template<typename T>
 Hubris::Shared (T *) -> Shared< T >
 
template<typename T>
 Hubris::Shared (Weak< T >) -> Shared< T >
 
template<typename T>
 Hubris::Observer (T *) -> Observer< T >
 
template<typename T>
constexpr void swap (Hubris::Handle< T > &lhs, Hubris::Handle< T > &rhs) noexcept
 
template<typename T, typename U>
requires Hubris::PolymorphicConvertible<U, T>
constexpr void swap (Hubris::Handle< T > &lhs, Hubris::Handle< U > &rhs) noexcept
 
template<typename T>
constexpr void swap (Hubris::Shared< T > &lhs, Hubris::Shared< T > &rhs) noexcept
 
template<typename T, typename U>
requires Hubris::PolymorphicConvertible<U, T>
constexpr void swap (Hubris::Shared< T > &lhs, Hubris::Shared< U > &rhs) noexcept
 

Function Documentation

◆ swap() [1/4]

template<typename T>
void swap ( Hubris::Handle< T > & lhs,
Hubris::Handle< T > & rhs )
constexprnoexcept

Definition at line 684 of file Memory.h.

◆ swap() [2/4]

template<typename T, typename U>
requires Hubris::PolymorphicConvertible<U, T>
void swap ( Hubris::Handle< T > & lhs,
Hubris::Handle< U > & rhs )
constexprnoexcept

Definition at line 689 of file Memory.h.

◆ swap() [3/4]

template<typename T>
void swap ( Hubris::Shared< T > & lhs,
Hubris::Shared< T > & rhs )
constexprnoexcept

Definition at line 694 of file Memory.h.

◆ swap() [4/4]

template<typename T, typename U>
requires Hubris::PolymorphicConvertible<U, T>
void swap ( Hubris::Shared< T > & lhs,
Hubris::Shared< U > & rhs )
constexprnoexcept

Definition at line 699 of file Memory.h.