Lumiera
0.pre.03
»edit your freedom«
|
Go to the source code of this file.
Memory management for the low-level model (render nodes network).
The model is organised into temporal segments, which are considered to be structurally constant and uniform. The objects within each segment are strongly interconnected, and thus each segment is created within a single build process and is replaced or released as a whole. AllocationCluster implements memory management to support this usage pattern. Optionally it is even possible to skip invocation of object destructors, making de-allocation highly efficient (typically the memory pages are already cache-cold when about to discarded).
Definition in file allocation-cluster.hpp.
#include "lib/error.hpp"
#include "lib/nocopy.hpp"
#include <type_traits>
#include <utility>
#include <memory>
Classes | |
class | AllocationCluster |
A pile of objects sharing common allocation and lifecycle. More... | |
struct | AllocationPolicy< I, E, ALO > |
Policy Mix-In used to adapt to the ElementFactory and Allocator. More... | |
struct | AllocationCluster::AllocationWithDestructor< X > |
struct | AllocationCluster::Allocator< X > |
class | AllocationCluster::Destructor |
struct | SetupSeveral< ALO, ARGS >::Policy< I, E > |
struct | SetupSeveral< ALO, ARGS > |
Extension point: how to configure the SeveralBuilder to use an allocator ALO, initialised by ARGS. More... | |
struct | SetupSeveral< std::void_t, lib::AllocationCluster & > |
Specialisation to use lib::Several with storage managed by an AllocationCluster instance, which must be provided as argument. More... | |
struct | AllocationCluster::Storage |
maintaining the Allocation More... | |
Namespaces | |
lib | |
Implementation namespace for support and library code. | |