Skip to main content

memory Folder

Files Index

filehelios/core/memory/_module.ixx

Aggregate module for helios::core namespace. More...

fileErasedUnique.ixx

Type-erased unique ownership wrapper. More...

Description

helios::core::memory

Low-level memory utilities for type-erased ownership.

Overview

This module provides foundational memory primitives used by the engine's resource management layer. The primary type is ErasedUnique, a lightweight ownership wrapper that enables heterogeneous collections without requiring a common base class.

Key Classes

ClassPurpose
ErasedUniqueType-erased unique ownership wrapper (16 bytes)

ErasedUnique

ErasedUnique provides unique_ptr-like ownership semantics without requiring a virtual destructor or common base class. It stores a void* and a typed deleter function pointer:

 struct ErasedUnique {
  void* ptr = nullptr;
  void (*destroy)(void*) noexcept = nullptr;
 };

Construction

Constructed from any std::unique_ptr<T>. The deleter captures the concrete type at construction time:

 auto obj = std::make_unique<MyResource>(args...);
 ErasedUnique erased{std::move(obj)};
 // erased.ptr → raw pointer
 // erased.destroy → calls delete static_cast<MyResource*>(ptr)

Move-Only Semantics

ErasedUnique is move-only. Moving transfers ownership and nulls the source. Copy construction and assignment are implicitly deleted.

 ErasedUnique a{std::make_unique<Foo>()};
 ErasedUnique b = std::move(a); // a is now empty

Primary Consumer

ErasedUnique is used by ResourceRegistry to store Managers, CommandBuffers, and other heterogeneous resources in a single std::vector<ErasedUnique> without vtable overhead for destruction.



Generated via doxygen2docusaurus 2.0.0 by Doxygen 1.15.0.