41 #ifndef STEAM_ENGINE_BUFFR_PROVIDER_H 42 #define STEAM_ENGINE_BUFFR_PROVIDER_H 60 using std::unique_ptr;
84 unique_ptr<BufferMetadata> meta_;
91 virtual uint prepareBuffers (uint count,
HashVal typeID) =0;
108 template<
typename BU>
121 template<
typename BU>
129 size_t getBufferSize (
HashVal typeID)
const;
149 template<
typename BU>
154 return lockBuffer (attach_object_automatically);
162 template<
typename BU>
A marker data type used in metadata / buffer management of the render engine.
void attachTypeHandler(BuffHandle const &target, BufferDescriptor const &reference)
allow for attaching and owing an object within an already created buffer
void releaseBuffer(BuffHandle const &)
BufferProvider API: declare done and detach.
Any copy and copy construction prohibited.
BuffHandle lockBufferFor()
convenience shortcut: prepare and claim ("lock") a buffer suitable to hold an object of the given typ...
inline string literal This is a marker type to indicate that
BuffHandle buildHandle(HashVal typeID, void *storage, LocalKey const &)
callback from implementation to build and enrol a BufferHandle, to be returned to the client as resul...
void emergencyCleanup(BuffHandle const &target, bool invokeDtor=false)
Steam-Layer implementation namespace root.
Mix-Ins to allow or prohibit various degrees of copying and cloning.
an opaque ID to be used by the BufferProvider implementation.
uint announce(uint count, BufferDescriptor const &)
BufferProvider API: declare in advance the need for working buffers.
Marker types to indicate a literal string and a Symbol.
LUMIERA_ERROR_DECLARE(BUFFER_MANAGEMENT)
Problem providing working buffers.
BufferDescriptor getDescriptorFor(size_t storageSize=0)
describe the kind of buffer managed by this provider
An opaque descriptor to identify the type and further properties of a data buffer.
A front-end to support the buffer management within the render nodes.
BuffHandle lockBuffer(BufferDescriptor const &)
BufferProvider API: retrieve a single buffer for exclusive use.
Helper holding a pair of type-build-up and destruction functors.
BufferProvider(Literal implementationID)
build a new provider instance, managing a family of buffers.
Lumiera error handling (C++ interface).
Hash value types and utilities.
Handle for a buffer for processing data, abstracting away the actual implementation.
size_t HashVal
a STL compatible hash value
virtual ~BufferProvider()
this is an ABC
A pair of functors to maintain a datastructure within a buffer.
bool verifyValidity(BufferDescriptor const &) const
Interface: a facility providing and managing working buffers for media calculations.
void emitBuffer(BuffHandle const &)
BufferProvider API: state transition to emitted state.
BufferDescriptor getDescriptor()
define a "buffer type" for automatically creating an instance of the template type embedded into the ...