Lumiera  0.pre.03
»edit your freedom«
allocation-cluster.hpp File Reference

Go to the source code of this file.

Description

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.

Note
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
allocation-cluster-test.cpp
builder::ToolFactory
frameid.hpp

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 <utility>
#include <vector>

Classes

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...
 

Namespaces

 lib
 Implementation namespace for support and library code.