Lumiera  0.pre.03
»edit your freedom«
ActualInvocationProcess< Strategy, BufferProvider > Class Template Reference

#include "steam/engine/nodeinvocation.hpp"

Description

template<class Strategy, class BufferProvider>
class steam::engine::ActualInvocationProcess< Strategy, BufferProvider >

The real invocation context state implementation.

It is created by the NodeWiring (WiringDescriptor) of the processing node which is pulled by this invocation, hereby using the internal configuration information to guide the selection of the real call sequence

assembling the call sequence implementation
Each ProcNode::pull() call creates such a StateAdapter subclass on the stack, with a concrete type according to the WiringDescriptor of the node to pull. This concrete type encodes a calculation Strategy, which is assembled as a chain of policy templates on top of OperationBase. For each of the possible configurations we define such a chain (see bottom of nodeoperation.hpp). The WiringFactory defined in nodewiring.cpp actually drives the instantiation of all those possible combinations.

Definition at line 216 of file nodeinvocation.hpp.

Public Member Functions

 ActualInvocationProcess (State &callingProcess, WiringDescriptor const &w, const uint outCh)
 
BuffHandle retrieve ()
 contains the details of Cache query and recursive calls to the predecessor node(s), eventually followed by the ProcNode::process() callback
 
- Public Member Functions inherited from BufferProvider
virtual ~BufferProvider ()
 this is an ABC
 
uint announce (uint count, BufferDescriptor const &)
 BufferProvider API: declare in advance the need for working buffers. More...
 
void attachTypeHandler (BuffHandle const &target, BufferDescriptor const &reference)
 allow for attaching and owing an object within an already created buffer More...
 
void emergencyCleanup (BuffHandle const &target, bool invokeDtor=false)
 
void emitBuffer (BuffHandle const &)
 BufferProvider API: state transition to emitted state. More...
 
size_t getBufferSize (HashVal typeID) const
 
template<typename BU >
BufferDescriptor getDescriptor ()
 define a "buffer type" for automatically creating an instance of the template type embedded into the buffer and destroying that embedded object when releasing the buffer.
 
BufferDescriptor getDescriptorFor (size_t storageSize=0)
 describe the kind of buffer managed by this provider
 
BufferDescriptor getDescriptorFor (size_t storageSize, TypeHandler specialTreatment)
 
BuffHandle lockBuffer (BufferDescriptor const &)
 BufferProvider API: retrieve a single buffer for exclusive use. More...
 
template<typename BU >
BuffHandle lockBufferFor ()
 convenience shortcut: prepare and claim ("lock") a buffer suitable to hold an object of the given type. More...
 
void releaseBuffer (BuffHandle const &)
 BufferProvider API: declare done and detach. More...
 
bool verifyValidity (BufferDescriptor const &) const
 

Additional Inherited Members

- Protected Member Functions inherited from BufferProvider
 BufferProvider (Literal implementationID)
 build a new provider instance, managing a family of buffers. More...
 
BuffHandle buildHandle (HashVal typeID, void *storage, LocalKey const &)
 callback from implementation to build and enrol a BufferHandle, to be returned to the client as result of the lockBuffer call. More...
 
virtual void detachBuffer (HashVal typeID, LocalKey const &)=0
 
virtual void mark_emitted (HashVal typeID, LocalKey const &)=0
 
virtual uint prepareBuffers (uint count, HashVal typeID)=0
 
virtual BuffHandle provideLockedBuffer (HashVal typeID)=0
 
bool was_created_by_this_provider (BufferDescriptor const &) const
 
+ Inheritance diagram for ActualInvocationProcess< Strategy, BufferProvider >:
+ Collaboration diagram for ActualInvocationProcess< Strategy, BufferProvider >:

The documentation for this class was generated from the following file: