Lumiera  0.pre.03
allocation-cluster.hpp File Reference

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 being built in a single build process and is replaced or released as a whole. AllocationCluster implements memory management to support this usage pattern.

this file is organised in a way which doesn't bind the client code to the memory manager implementation. Parts of the interface depending on the usage situation are implemented using templates, and thus need to be in the header. This way they can exploit the type information available in call context. This information is passed to generic implementation functions defined in allocation-cluster.cpp . In a similar vein, the AllocationCluster::MemoryManger is just forward declared.
See also

Definition in file allocation-cluster.hpp.

#include "lib/error.hpp"
#include "lib/nocopy.hpp"
#include "lib/sync-classlock.hpp"
#include "lib/scoped-holder.hpp"
#include "lib/scoped-holder-transfer.hpp"
#include <vector>


class  AllocationCluster
 A pile of objects sharing common allocation and lifecycle. More...
struct  AllocationCluster::TypeInfo
struct  AllocationCluster::TypeSlot< TY >
 organising the association Type -> table entry More...
struct  AllocationCluster::TypeSlot< TY >
 organising the association Type -> table entry More...


 Implementation namespace for support and library code.