Invocation: consider what is required to setup a FeedManifold
...and this line of analysis brings us deep into the ''Buffer Provider'' concept developed in 2012 — which appears to be very well to the point and stands the test of time. Adding some ''variadic arguments'' at the right place surprisingly leads to an ''extension point'' — which in turn directly taps into the still quite uncharted territory interfacing to a **Domain Ontology**; the latter is assumed to define how to deal with entities and relationships defined by some media handling library like e.g. FFmpeg. So what we're set to do here is actually ''ontology mapping....''
This commit is contained in:
parent
717af81986
commit
8c536fc637
12 changed files with 571 additions and 377 deletions
|
|
@ -50,6 +50,7 @@
|
|||
#include "steam/engine/buffer-local-key.hpp"
|
||||
#include "lib/nocopy.hpp"
|
||||
|
||||
#include <utility>
|
||||
#include <memory>
|
||||
|
||||
|
||||
|
|
@ -58,6 +59,7 @@ namespace engine {
|
|||
|
||||
using lib::Literal;
|
||||
using std::unique_ptr;
|
||||
using std::forward;
|
||||
|
||||
|
||||
class BufferMetadata;
|
||||
|
|
@ -105,8 +107,8 @@ namespace engine {
|
|||
void emitBuffer (BuffHandle const&);
|
||||
void releaseBuffer (BuffHandle const&);
|
||||
|
||||
template<typename BU>
|
||||
BuffHandle lockBufferFor ();
|
||||
template<typename BU, typename...ARGS>
|
||||
BuffHandle lockBufferFor (ARGS ...args);
|
||||
|
||||
/** allow for attaching and owing an object within an already created buffer */
|
||||
void attachTypeHandler (BuffHandle const& target, BufferDescriptor const& reference);
|
||||
|
|
@ -118,8 +120,8 @@ namespace engine {
|
|||
BufferDescriptor getDescriptorFor(size_t storageSize=0);
|
||||
BufferDescriptor getDescriptorFor(size_t storageSize, TypeHandler specialTreatment);
|
||||
|
||||
template<typename BU>
|
||||
BufferDescriptor getDescriptor();
|
||||
template<typename BU, typename...ARGS>
|
||||
BufferDescriptor getDescriptor (ARGS ...args);
|
||||
|
||||
|
||||
|
||||
|
|
@ -146,11 +148,11 @@ namespace engine {
|
|||
* buffer descriptor. The corresponding buffer
|
||||
* has been allocated and marked for exclusive use
|
||||
*/
|
||||
template<typename BU>
|
||||
template<typename BU, typename...ARGS>
|
||||
BuffHandle
|
||||
BufferProvider::lockBufferFor()
|
||||
BufferProvider::lockBufferFor (ARGS ...args)
|
||||
{
|
||||
BufferDescriptor attach_object_automatically = getDescriptor<BU>();
|
||||
BufferDescriptor attach_object_automatically = getDescriptor<BU> (forward<ARGS> (args)...);
|
||||
return lockBuffer (attach_object_automatically);
|
||||
}
|
||||
|
||||
|
|
@ -159,11 +161,11 @@ namespace engine {
|
|||
* an instance of the template type embedded into the buffer
|
||||
* and destroying that embedded object when releasing the buffer.
|
||||
*/
|
||||
template<typename BU>
|
||||
template<typename BU, typename...ARGS>
|
||||
BufferDescriptor
|
||||
BufferProvider::getDescriptor()
|
||||
BufferProvider::getDescriptor (ARGS ...args)
|
||||
{
|
||||
return getDescriptorFor (sizeof(BU), TypeHandler::create<BU>());
|
||||
return getDescriptorFor (sizeof(BU), TypeHandler::create<BU> (forward<ARGS> (args)...));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -52,7 +52,6 @@
|
|||
#include "steam/mobject/parameter.hpp"
|
||||
#include "steam/engine/state-closure-obsolete.hpp" /////////////////////////////////////////////////////////TICKET #1367 : Rebuild the Node Invocation
|
||||
#include "steam/engine/channel-descriptor.hpp"
|
||||
#include "steam/engine/turnout-system.hpp"
|
||||
#include "lib/frameid.hpp"
|
||||
#include "lib/ref-array.hpp"
|
||||
|
||||
|
|
@ -71,13 +70,6 @@ namespace engine {
|
|||
typedef ProcNode* PNode;
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1367 : Rebuild the Node Invocation
|
||||
|
||||
class Port
|
||||
{
|
||||
public:
|
||||
virtual ~Port(); ///< this is an interface
|
||||
|
||||
virtual TurnoutSystem enactTurnout() =0;
|
||||
};
|
||||
|
||||
/**
|
||||
* Interface: Description of the input and output ports,
|
||||
|
|
|
|||
|
|
@ -35,11 +35,10 @@
|
|||
|
||||
#include "lib/error.hpp"
|
||||
#include "lib/nocopy.hpp"
|
||||
#include "steam/engine/channel-descriptor.hpp"
|
||||
#include "steam/engine/proc-node.hpp"
|
||||
#include "lib/several.hpp"
|
||||
|
||||
#include <vector>
|
||||
#include <utility>
|
||||
//#include <utility>
|
||||
|
||||
|
||||
////////////////////////////////TICKET #826 will be reworked alltogether
|
||||
|
|
@ -61,134 +60,12 @@ namespace engine {
|
|||
* thus the array of real buffer pointers can be fed directly to the
|
||||
* processing function of the respective node.
|
||||
*
|
||||
* @todo this whole design is a first attempt and rather clumsy. It should be reworked
|
||||
* to use a single contiguous memory area and just layer the object structure on top
|
||||
* (by using placement new). Yet the idea of an stack-like organisation should be retained
|
||||
* @todo WIP-WIP-WIP 7/24 now reworking the old design in the light of actual render engine requirements...
|
||||
*/
|
||||
struct FeedManifold
|
||||
{
|
||||
typedef BuffHandle * PHa;
|
||||
typedef BuffHandle::PBuff * PBu;
|
||||
typedef pair<PHa const,PBu const> Chunk;
|
||||
|
||||
PHa outHandle;
|
||||
PHa inHandle;
|
||||
PBu outBuff;
|
||||
PBu inBuff;
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1367 : presumably obsolete
|
||||
class BufferDescriptor;
|
||||
|
||||
/** Obsolete, to be rewritten /////TICKET #826 */
|
||||
class BuffTableStorage
|
||||
{
|
||||
/////////////////////////////////////////////////////////////////////////TICKET #826 need to be reworked entirely
|
||||
/** just a placeholder to decouple the existing code
|
||||
* from the reworked BuffHandle logic. The existing
|
||||
* code in turn will be reworked rather fundamentally
|
||||
*/
|
||||
struct BuffHaXXXX
|
||||
: BuffHandle
|
||||
{
|
||||
BuffHaXXXX() : BuffHandle(just_satisfy_the_compiler()) { /* wont work ever */ }
|
||||
static BufferDescriptor const&
|
||||
just_satisfy_the_compiler() { }
|
||||
};
|
||||
|
||||
////////////////////////////////////TICKET #825 should be backed by mpool and integrated with node invocation
|
||||
vector<BuffHaXXXX> hTab_;
|
||||
vector<BuffHandle::PBuff> pTab_;
|
||||
size_t level_;
|
||||
|
||||
public:
|
||||
BuffTableStorage (const size_t maxSiz)
|
||||
: hTab_(maxSiz),
|
||||
pTab_(maxSiz),
|
||||
level_(0)
|
||||
{ }
|
||||
|
||||
~BuffTableStorage() { ASSERT (0==level_, "buffer management logic broken."); }
|
||||
|
||||
protected:
|
||||
|
||||
friend class BuffTableChunk;
|
||||
|
||||
/** allocate the given number of slots
|
||||
* starting at current level to be used
|
||||
* by the newly created BuffTableChunk
|
||||
*/
|
||||
FeedManifold::Chunk
|
||||
claim (uint slots)
|
||||
{
|
||||
ASSERT (pTab_.size() == hTab_.size());
|
||||
REQUIRE (level_+slots <= hTab_.size());
|
||||
|
||||
size_t prev_level (level_);
|
||||
level_ += slots;
|
||||
return std::make_pair (&hTab_[prev_level],
|
||||
&pTab_[prev_level]);
|
||||
}
|
||||
|
||||
void
|
||||
release (uint slots)
|
||||
{
|
||||
ASSERT (slots <= level_);
|
||||
REQUIRE (level_ <= hTab_.size());
|
||||
REQUIRE (level_ <= pTab_.size());
|
||||
|
||||
level_ -= slots;
|
||||
}
|
||||
|
||||
bool
|
||||
level_check (FeedManifold::Chunk& prev_level)
|
||||
{
|
||||
return prev_level.first == &hTab_[level_]
|
||||
&& prev_level.second == &pTab_[level_];
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/** Obsolete, to be rewritten /////TICKET #826
|
||||
* to be allocated on the stack while evaluating a ProcNode#pull() call.
|
||||
* The "current" State (StateProxy) maintains a BuffTableStorage (=pool),
|
||||
* which can be used to crate such chunks. The claiming and releasing of
|
||||
* slots in the BuffTableStorage is automatically tied to BuffTableChunk
|
||||
* object's lifecycle.
|
||||
*/
|
||||
class BuffTableChunk
|
||||
: public FeedManifold,
|
||||
util::NonCopyable
|
||||
{
|
||||
const uint siz_;
|
||||
FeedManifold::Chunk tab_;
|
||||
BuffTableStorage& sto_;
|
||||
|
||||
public:
|
||||
BuffTableChunk (Connectivity const& wd, BuffTableStorage& storage)
|
||||
: siz_(wd.nrI + wd.nrO),
|
||||
tab_(storage.claim (siz_)),
|
||||
sto_(storage)
|
||||
{
|
||||
const uint nrO(wd.nrO);
|
||||
|
||||
// Setup the publicly visible table locations
|
||||
this->outHandle = &tab_.first[ 0 ];
|
||||
this->inHandle = &tab_.first[nrO];
|
||||
this->outBuff = &tab_.second[ 0 ];
|
||||
this->inBuff = &tab_.second[nrO];
|
||||
}
|
||||
|
||||
~BuffTableChunk ()
|
||||
{
|
||||
sto_.release (siz_);
|
||||
ASSERT ( sto_.level_check (tab_),
|
||||
"buffer management logic broken.");
|
||||
}
|
||||
};
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1367 : (End)presumably obsolete
|
||||
|
||||
|
||||
|
||||
|
||||
}} // namespace steam::engine
|
||||
|
|
|
|||
|
|
@ -42,10 +42,7 @@
|
|||
#define ENGINE_NODE_WIRING_BUILDER_H
|
||||
|
||||
|
||||
//#include "steam/engine/proc-node.hpp" //////////////////////////////////////////////////////////////////TICKET #1367 : switch to new Node Invocation scheme
|
||||
#include "steam/engine/connectivity-obsolete.hpp"
|
||||
#include "lib/ref-array.hpp"
|
||||
#include "lib/util-foreach.hpp"
|
||||
#include "steam/engine/proc-node.hpp"
|
||||
#include "lib/nocopy.hpp"
|
||||
|
||||
|
||||
|
|
@ -53,137 +50,6 @@
|
|||
namespace steam {
|
||||
namespace engine {
|
||||
|
||||
using lib::RefArray;
|
||||
|
||||
|
||||
/**
|
||||
* Finding out about a concrete way of wiring up a
|
||||
* ProcNode about to be built. Such a (temporary) setup object
|
||||
* is used while building the low-level model. It is loaded with
|
||||
* information concerning the intended connections to be made
|
||||
* and then used to initialise the wiring descriptor, which
|
||||
* in turn allows us to setup the ProcNode.
|
||||
*
|
||||
* \par intended usage pattern
|
||||
* The goal is to describe the constellation of a new node to be built.
|
||||
* Thus, we start with one or several existing nodes, specifying which
|
||||
* output should go to which input pin of the yet-to-be created new node.
|
||||
* When intending to create a source node, a default WiringSituation
|
||||
* should be used, without adding any connection information.
|
||||
*
|
||||
* @deprecated WIP-WIP-WIP 2024 Node-Invocation is reworked from ground up for the »Playback Vertical Slice«
|
||||
*/
|
||||
class WiringSituation
|
||||
: util::NonCopyable
|
||||
{
|
||||
long flags_;
|
||||
asset::Proc::ProcFunc* function_;
|
||||
|
||||
public: /* === API for querying collected data === */
|
||||
RefArray<ChannelDescriptor>&
|
||||
makeOutDescriptor() const
|
||||
{
|
||||
UNIMPLEMENTED ("build new output descriptors for the node under construction"); //////////TODO: where to get the information about the output channels???
|
||||
}
|
||||
|
||||
RefArray<InChanDescriptor>&
|
||||
makeInDescriptor() const
|
||||
{
|
||||
UNIMPLEMENTED ("build new input descriptors for the node under construction");
|
||||
}
|
||||
|
||||
Connectivity::ProcFunc*
|
||||
resolveProcessingFunction() const
|
||||
{
|
||||
REQUIRE (function_);
|
||||
return function_;
|
||||
}
|
||||
|
||||
lumiera::NodeID const&
|
||||
createNodeID() const
|
||||
{
|
||||
UNIMPLEMENTED ("initiate generation of a new unique node-ID"); // see rendergraph.cpp
|
||||
}
|
||||
|
||||
|
||||
|
||||
public: /* === API for specifying the desired wiring === */
|
||||
|
||||
/** A default WiringSituation doesn't specify any connections.
|
||||
* It can be used as-is for building a source node, or augmented
|
||||
* with connection information later on.
|
||||
*/
|
||||
WiringSituation()
|
||||
: flags_(0)
|
||||
, function_(0)
|
||||
{
|
||||
UNIMPLEMENTED ("representation of the intended wiring");
|
||||
}
|
||||
|
||||
|
||||
/** Continue the wiring by hooking directly into the output
|
||||
* of an existing predecessor node
|
||||
*/
|
||||
WiringSituation (PNode predecessor)
|
||||
: flags_(0)
|
||||
, function_(0)
|
||||
{
|
||||
UNIMPLEMENTED ("wiring representation; hook up connections 1:1");
|
||||
REQUIRE (predecessor);
|
||||
|
||||
//////////////////////////TODO: see Ticket 254
|
||||
// for_each (predecessor->outputs(), ..... see also Ticket 183 (invoking member fun in for_each)
|
||||
|
||||
}
|
||||
|
||||
|
||||
/** set up a connection leading to a specific input pin of the new node */
|
||||
WiringSituation&
|
||||
defineInput (uint inPin, PNode pred, uint outPin)
|
||||
{
|
||||
UNIMPLEMENTED ("wiring representation; define new connection");
|
||||
return *this;
|
||||
}
|
||||
|
||||
/** set up the next input connection,
|
||||
* originating at a specific output pin of the predecessor */
|
||||
WiringSituation&
|
||||
defineInput (PNode pred, uint outPin)
|
||||
{
|
||||
UNIMPLEMENTED ("wiring representation; define new connection");
|
||||
return *this;
|
||||
}
|
||||
|
||||
/** set up the next input connection to a specific input pin,
|
||||
* originating at a the next/sole output pin of the predecessor */
|
||||
WiringSituation&
|
||||
defineInput (uint inPin, PNode pred)
|
||||
{
|
||||
UNIMPLEMENTED ("wiring representation; define new connection");
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
/** set detail flags regarding the desired node operation mode */
|
||||
WiringSituation&
|
||||
setFlag (long code)
|
||||
{
|
||||
flags_ |= code;
|
||||
return *this;
|
||||
}
|
||||
|
||||
long getFlags () const { return flags_; }
|
||||
|
||||
|
||||
/** trigger resolving of the actual processing function */
|
||||
WiringSituation&
|
||||
resolveProcessor (asset::Proc const& procAsset)
|
||||
{
|
||||
function_ = procAsset.resolveProcessor();
|
||||
ENSURE (function_);
|
||||
}
|
||||
|
||||
};
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1367 : Rebuild the Node Invocation
|
||||
|
||||
class NodeWiringBuilder
|
||||
|
|
@ -194,8 +60,7 @@ namespace engine {
|
|||
/****************************************************//**
|
||||
* Terminal: complete the Connectivity defined thus far.
|
||||
*/
|
||||
// Connectivity
|
||||
void* /////////////////////////////////////////////////OOO Connectivity no longer needs to be abstract
|
||||
Connectivity
|
||||
build()
|
||||
{
|
||||
UNIMPLEMENTED("Node-Connectivity Setup");
|
||||
|
|
@ -211,6 +76,7 @@ namespace engine {
|
|||
buildPatternFor()
|
||||
{
|
||||
UNIMPLEMENTED("instantiate Domain Ontology Facade and outfit the NodeWiringBuilder");
|
||||
return NodeWiringBuilder{};
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -33,9 +33,7 @@
|
|||
#define ENGINE_NODEWIRING_OBSOLETE_H
|
||||
|
||||
|
||||
//#include "steam/engine/proc-node.hpp" ///////////////////////////////TODO clarify if required further on
|
||||
#include "steam/engine/connectivity-obsolete.hpp"
|
||||
#include "steam/engine/node-wiring-builder.hpp"
|
||||
#include "lib/allocation-cluster.hpp"
|
||||
#include "lib/ref-array.hpp"
|
||||
#include "lib/util-foreach.hpp"
|
||||
|
|
@ -53,9 +51,141 @@ namespace engine {
|
|||
|
||||
namespace config { class WiringFactoryImpl; }
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1367 : inlined here and then dropped in node-wiring-builder.hpp
|
||||
using lib::RefArray;
|
||||
|
||||
|
||||
/**
|
||||
* Finding out about a concrete way of wiring up a
|
||||
* ProcNode about to be built. Such a (temporary) setup object
|
||||
* is used while building the low-level model. It is loaded with
|
||||
* information concerning the intended connections to be made
|
||||
* and then used to initialise the wiring descriptor, which
|
||||
* in turn allows us to setup the ProcNode.
|
||||
*
|
||||
* \par intended usage pattern
|
||||
* The goal is to describe the constellation of a new node to be built.
|
||||
* Thus, we start with one or several existing nodes, specifying which
|
||||
* output should go to which input pin of the yet-to-be created new node.
|
||||
* When intending to create a source node, a default WiringSituation
|
||||
* should be used, without adding any connection information.
|
||||
*
|
||||
* @deprecated WIP-WIP-WIP 2024 Node-Invocation is reworked from ground up for the »Playback Vertical Slice«
|
||||
*/
|
||||
class WiringSituation
|
||||
: util::NonCopyable
|
||||
{
|
||||
long flags_;
|
||||
asset::Proc::ProcFunc* function_;
|
||||
|
||||
public: /* === API for querying collected data === */
|
||||
RefArray<ChannelDescriptor>&
|
||||
makeOutDescriptor() const
|
||||
{
|
||||
UNIMPLEMENTED ("build new output descriptors for the node under construction"); //////////TODO: where to get the information about the output channels???
|
||||
}
|
||||
|
||||
RefArray<InChanDescriptor>&
|
||||
makeInDescriptor() const
|
||||
{
|
||||
UNIMPLEMENTED ("build new input descriptors for the node under construction");
|
||||
}
|
||||
|
||||
Connectivity::ProcFunc*
|
||||
resolveProcessingFunction() const
|
||||
{
|
||||
REQUIRE (function_);
|
||||
return function_;
|
||||
}
|
||||
|
||||
lumiera::NodeID const&
|
||||
createNodeID() const
|
||||
{
|
||||
UNIMPLEMENTED ("initiate generation of a new unique node-ID"); // see rendergraph.cpp
|
||||
}
|
||||
|
||||
|
||||
|
||||
public: /* === API for specifying the desired wiring === */
|
||||
|
||||
/** A default WiringSituation doesn't specify any connections.
|
||||
* It can be used as-is for building a source node, or augmented
|
||||
* with connection information later on.
|
||||
*/
|
||||
WiringSituation()
|
||||
: flags_(0)
|
||||
, function_(0)
|
||||
{
|
||||
UNIMPLEMENTED ("representation of the intended wiring");
|
||||
}
|
||||
|
||||
|
||||
/** Continue the wiring by hooking directly into the output
|
||||
* of an existing predecessor node
|
||||
*/
|
||||
WiringSituation (PNode predecessor)
|
||||
: flags_(0)
|
||||
, function_(0)
|
||||
{
|
||||
UNIMPLEMENTED ("wiring representation; hook up connections 1:1");
|
||||
REQUIRE (predecessor);
|
||||
|
||||
//////////////////////////TODO: see Ticket 254
|
||||
// for_each (predecessor->outputs(), ..... see also Ticket 183 (invoking member fun in for_each)
|
||||
|
||||
}
|
||||
|
||||
|
||||
/** set up a connection leading to a specific input pin of the new node */
|
||||
WiringSituation&
|
||||
defineInput (uint inPin, PNode pred, uint outPin)
|
||||
{
|
||||
UNIMPLEMENTED ("wiring representation; define new connection");
|
||||
return *this;
|
||||
}
|
||||
|
||||
/** set up the next input connection,
|
||||
* originating at a specific output pin of the predecessor */
|
||||
WiringSituation&
|
||||
defineInput (PNode pred, uint outPin)
|
||||
{
|
||||
UNIMPLEMENTED ("wiring representation; define new connection");
|
||||
return *this;
|
||||
}
|
||||
|
||||
/** set up the next input connection to a specific input pin,
|
||||
* originating at a the next/sole output pin of the predecessor */
|
||||
WiringSituation&
|
||||
defineInput (uint inPin, PNode pred)
|
||||
{
|
||||
UNIMPLEMENTED ("wiring representation; define new connection");
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
/** set detail flags regarding the desired node operation mode */
|
||||
WiringSituation&
|
||||
setFlag (long code)
|
||||
{
|
||||
flags_ |= code;
|
||||
return *this;
|
||||
}
|
||||
|
||||
long getFlags () const { return flags_; }
|
||||
|
||||
|
||||
/** trigger resolving of the actual processing function */
|
||||
WiringSituation&
|
||||
resolveProcessor (asset::Proc const& procAsset)
|
||||
{
|
||||
function_ = procAsset.resolveProcessor();
|
||||
ENSURE (function_);
|
||||
}
|
||||
|
||||
};
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1367 : (END)inlined here and then dropped in node-wiring-builder.hpp
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -51,7 +51,8 @@
|
|||
#include "steam/engine/channel-descriptor.hpp"
|
||||
#include "steam/engine/turnout-system.hpp"
|
||||
#include "lib/frameid.hpp"
|
||||
#include "lib/ref-array.hpp"
|
||||
#include "lib/ref-array.hpp" /////////////////////OOO phase out
|
||||
#include "lib/several.hpp"
|
||||
|
||||
#include <vector>
|
||||
|
||||
|
|
|
|||
|
|
@ -59,11 +59,11 @@
|
|||
#ifndef STEAM_ENGINE_TURNOUT_H
|
||||
#define STEAM_ENGINE_TURNOUT_H
|
||||
|
||||
#include <steam/engine/state-closure-obsolete.hpp>
|
||||
#include "steam/common.hpp"
|
||||
#include "steam/engine/proc-node.hpp"
|
||||
#include "steam/engine/turnout-system.hpp"
|
||||
#include "steam/engine/feed-manifold.hpp"
|
||||
#include "steam/engine/state-closure.hpp"
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1367 : Rebuild the Node Invocation
|
||||
#include "steam/engine/channel-descriptor.hpp"
|
||||
//#include "vault/gear/job.h"
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@
|
|||
#include "lib/error.hpp"
|
||||
#include "lib/hash-value.h"
|
||||
|
||||
#include <utility>
|
||||
#include <functional>
|
||||
#include <boost/functional/hash.hpp>
|
||||
|
||||
|
|
@ -54,6 +55,7 @@ namespace engine {
|
|||
|
||||
using lib::HashVal;
|
||||
using std::bind;
|
||||
using std::forward;
|
||||
using std::function;
|
||||
using std::placeholders::_1;
|
||||
|
||||
|
|
@ -62,18 +64,11 @@ namespace engine {
|
|||
|
||||
namespace { // (optional) helpers to build an object embedded into a buffer...
|
||||
|
||||
template<class X>
|
||||
template<class X, typename...ARGS>
|
||||
inline void
|
||||
buildIntoBuffer (void* storageBuffer)
|
||||
buildIntoBuffer (void* storageBuffer, ARGS&& ...args)
|
||||
{
|
||||
new(storageBuffer) X();
|
||||
}
|
||||
|
||||
template<class X, typename A1>
|
||||
inline void
|
||||
buildIntoBuffer_A1 (void* storageBuffer, A1 arg1)
|
||||
{
|
||||
new(storageBuffer) X(arg1);
|
||||
new(storageBuffer) X(forward<ARGS> (args)...);
|
||||
}
|
||||
|
||||
template<class X>
|
||||
|
|
@ -145,20 +140,13 @@ namespace engine {
|
|||
{ }
|
||||
|
||||
/** builder function defining a TypeHandler
|
||||
* to place a default-constructed object
|
||||
* into the buffer. */
|
||||
template<class X>
|
||||
* to place an object into the buffer,
|
||||
* possibly with given ctor arguments. */
|
||||
template<class X, typename...ARGS>
|
||||
static TypeHandler
|
||||
create ()
|
||||
create (ARGS&& ...args)
|
||||
{
|
||||
return TypeHandler (buildIntoBuffer<X>, destroyInBuffer<X>);
|
||||
}
|
||||
|
||||
template<class X, typename A1>
|
||||
static TypeHandler
|
||||
create (A1 a1)
|
||||
{
|
||||
return TypeHandler ( bind (buildIntoBuffer_A1<X,A1>, _1, a1)
|
||||
return TypeHandler ( bind (buildIntoBuffer<X,ARGS...>, _1, forward<ARGS> (args)...)
|
||||
, destroyInBuffer<X>);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -135,25 +135,27 @@ namespace test {
|
|||
*/
|
||||
class FeedManifold_test : public Test
|
||||
{
|
||||
#if false /////////////////////////////////////////////////////////////////////////////////////////////////////////////UNIMPLEMENTED :: TICKET #852
|
||||
using PSto = std::unique_ptr<BuffTableStorage>;
|
||||
|
||||
PSto pStorage;
|
||||
#endif /////////////////////////////////////////////////////////////////////////////////////////////////////////////UNIMPLEMENTED :: TICKET #852
|
||||
ulong counter;
|
||||
|
||||
virtual void run(Arg)
|
||||
{
|
||||
counter = 0;
|
||||
|
||||
#if false /////////////////////////////////////////////////////////////////////////////////////////////////////////////UNIMPLEMENTED :: TICKET #852
|
||||
// allocate storage block to be used chunk wise
|
||||
pStorage.reset (new BuffTableStorage (TABLE_SIZ));
|
||||
|
||||
#if false /////////////////////////////////////////////////////////////////////////////////////////////////////////////UNIMPLEMENTED :: TICKET #852
|
||||
invocation (0, detect_start_level(*pStorage));
|
||||
#endif /////////////////////////////////////////////////////////////////////////////////////////////////////////////UNIMPLEMENTED :: TICKET #852
|
||||
|
||||
pStorage.reset(0); // dtor throws assertion error if corrupted
|
||||
|
||||
cout << "BuffTable chunks allocated: "<<counter<< "\n";
|
||||
#endif /////////////////////////////////////////////////////////////////////////////////////////////////////////////UNIMPLEMENTED :: TICKET #852
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -26,6 +26,9 @@
|
|||
|
||||
|
||||
#include "lib/test/run.hpp"
|
||||
#include "steam/engine/proc-node.hpp"
|
||||
#include "steam/engine/node-wiring-builder.hpp"
|
||||
#include "steam/engine/test-rand-ontology.hpp"
|
||||
//#include "lib/util.hpp"
|
||||
|
||||
|
||||
|
|
@ -40,14 +43,56 @@ namespace test {
|
|||
|
||||
|
||||
/***************************************************************//**
|
||||
* @test check render node operation modes and collaboration.
|
||||
* @test demonstrate and document how [render nodes](\ref proc-node.hpp)
|
||||
* are connected into a processing network, allowing to _invoke_
|
||||
* a \ref Port on a node to pull-generate a render result.
|
||||
* - the foundation layer is formed by the nodes as linked into a network
|
||||
* - starting from any Port, a TurnoutSystem can be established
|
||||
* - which in turn allows _turn out_ a render result from this port.
|
||||
*/
|
||||
class NodeLinkage_test : public Test
|
||||
{
|
||||
virtual void run(Arg)
|
||||
virtual void
|
||||
run (Arg)
|
||||
{
|
||||
build_connected_nodes();
|
||||
generate_turnout_system();
|
||||
trigger_node_port_invocation();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/** @test TODO Build render nodes linked into a connectivity network
|
||||
* @todo WIP 7/24 🔁 define ⟶ ✔ implement
|
||||
*/
|
||||
void
|
||||
build_connected_nodes()
|
||||
{
|
||||
auto con = buildPatternFor<TestRandOntology>()
|
||||
.build();
|
||||
UNIMPLEMENTED ("build render nodes linked into a connectivity network");
|
||||
}
|
||||
|
||||
|
||||
/** @test TODO Use existing node connectivity to generate a TurnoutSystem
|
||||
* @todo WIP 7/24 🔁 define ⟶ implement
|
||||
*/
|
||||
void
|
||||
generate_turnout_system()
|
||||
{
|
||||
UNIMPLEMENTED ("use existing node connectivity to generate a TurnoutSystem");
|
||||
}
|
||||
|
||||
|
||||
/** @test TODO Invoke some render nodes as linked together
|
||||
* @todo WIP 7/24 🔁 define ⟶ implement
|
||||
*/
|
||||
void
|
||||
trigger_node_port_invocation()
|
||||
{
|
||||
UNIMPLEMENTED ("operate some render nodes as linked together");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
66
tests/core/steam/engine/test-rand-ontology.hpp
Normal file
66
tests/core/steam/engine/test-rand-ontology.hpp
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
/*
|
||||
TEST-RAND-ONTOLOGY.hpp - placeholder for a domain-ontology working on dummy data frames
|
||||
|
||||
Copyright (C) Lumiera.org
|
||||
2024, Hermann Vosseler <Ichthyostega@web.de>
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of
|
||||
the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
*/
|
||||
|
||||
/** @file testframe-rand-ontology.hpp
|
||||
** A faked »media calculation« environment to validate the render node network.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef STEAM_ENGINE_TEST_RAND_ONTOLOGY_H
|
||||
#define STEAM_ENGINE_TEST_RAND_ONTOLOGY_H
|
||||
|
||||
|
||||
#include "steam/engine/testframe.hpp"
|
||||
|
||||
|
||||
namespace steam {
|
||||
namespace engine{
|
||||
namespace test {
|
||||
|
||||
|
||||
/**
|
||||
* A fake _Domain Ontology_ to describe mocked »render operations« on
|
||||
* dummy data frames filled with random numbers.
|
||||
*
|
||||
* @see TestFrame_test
|
||||
* @see NodeDevel_test
|
||||
* @see NodeLinkage_test
|
||||
*
|
||||
*/
|
||||
class TestRandOntology
|
||||
{
|
||||
|
||||
public:
|
||||
~TestRandOntology() = default;
|
||||
TestRandOntology() = default;
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
|
||||
|
||||
/** */
|
||||
|
||||
|
||||
|
||||
}}} // namespace steam::engine::test
|
||||
#endif
|
||||
|
|
@ -80043,9 +80043,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1719267418558" ID="ID_1746035700" MODIFIED="1719267571677" TEXT="soll hier dem Ergebnis eines echten Builder-Laufes vorgreifen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...für den »Playback Vertical Slice« wird eine Fixture fabriziert, wie sie <i>vermutlich später mal</i> vom Builder produziert werden wird (wenn es ihn dann endlich mal gibt) — tatsächlich sehe ich das als ersten prototypischen Entwurf, den ich hier nebenbei aus einer bottom-up-Bewegung gewinnen kann
|
||||
|
|
@ -80444,16 +80442,13 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1714329007283" ID="ID_1710787321" MODIFIED="1714329013657" TEXT="hat ein RenderDrive"/>
|
||||
<node CREATED="1714329024327" ID="ID_1073111908" MODIFIED="1719267945559" TEXT="ein Frame-Job liefert einen Datenframe">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
beachte: dieser »eine Frame« kann durchaus noch inhärent strukturiert sein, beispielsweise mehrere <i>Planes</i> für ein planares Format enthalten oder ein<i> Interleaved-Zyklus</i> von Einzelframes für zusammengehörige Kanäle sein — entscheidend ist, daß dieses Datenelement jeweils<i> als EInheit </i>verwendet und zusammen produziert oder konsumiert wird.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1714329014208" ID="ID_1766738306" MODIFIED="1714329023547" TEXT="dies erzeugt eine Folge von Frame-Jobs"/>
|
||||
<node CREATED="1719267709323" ID="ID_1324726117" MODIFIED="1719267747754" TEXT="»Kanal« bedeutet hier: gemeinsame Datensequenz"/>
|
||||
|
|
@ -80720,6 +80715,22 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1713661237357" ID="ID_5368181" MODIFIED="1713661263421" TEXT="habe anscheinend die "buff handle logic" in 2011 komplett umgekrempelt"/>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1322262595498" ID="ID_530710667" MODIFIED="1719611921052">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p style="text-align: center">
|
||||
erste Rohentwürfe
|
||||
</p>
|
||||
<p style="text-align: center">
|
||||
+Basis-Implementation
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<linktarget COLOR="#797a8d" DESTINATION="ID_530710667" ENDARROW="Default" ENDINCLINATION="206;40;" ID="Arrow_ID_385887777" SOURCE="ID_1560472992" STARTARROW="None" STARTINCLINATION="551;-43;"/>
|
||||
<linktarget COLOR="#6b5acb" DESTINATION="ID_530710667" ENDARROW="Default" ENDINCLINATION="1768;327;" ID="Arrow_ID_24508834" SOURCE="ID_486247041" STARTARROW="None" STARTINCLINATION="673;-23;"/>
|
||||
<icon BUILTIN="list"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1713794992321" ID="ID_267762321" MODIFIED="1713795160403" TEXT="dieser Test enthält aber bereits die Quintessenz des neuen Buffer-Protokolls">
|
||||
<arrowlink COLOR="#3c61b7" DESTINATION="ID_900623108" ENDARROW="Default" ENDINCLINATION="-475;-40;" ID="Arrow_ID_245920004" STARTARROW="None" STARTINCLINATION="-218;8;"/>
|
||||
|
|
@ -81400,22 +81411,17 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1719188209270" ID="ID_207282130" MODIFIED="1719188231525" TEXT="von diesem wäre dann der Sinn der aufzubauenden Verdrahtung abzulesen"/>
|
||||
<node CREATED="1719188232382" ID="ID_246650360" MODIFIED="1719188252195">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
aber erwartungsgemäß hat man das<i> eben grade nicht</i>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1719188256485" ID="ID_1054880063" MODIFIED="1719188272666">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...sondern nur einen <b>lokalen</b> Kontext
|
||||
|
|
@ -81439,23 +81445,18 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="stop-sign"/>
|
||||
<node CREATED="1719190839832" ID="ID_1276741051" MODIFIED="1719265986836" TEXT="ich verstehe diese alte Struktur nur ansatzweise">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...und ich kann mich erinnern, daß ich sie auch damals nicht vestanden habe, sondern mich immer nur von Definition zu Definition hangelte...
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<linktarget COLOR="#ff004b" DESTINATION="ID_1276741051" ENDARROW="Default" ENDINCLINATION="460;0;" ID="Arrow_ID_1977387211" SOURCE="ID_295398317" STARTARROW="None" STARTINCLINATION="-52;188;"/>
|
||||
</node>
|
||||
<node CREATED="1719190856486" ID="ID_231251746" MODIFIED="1719191208897" TEXT="klar ist: diese Factory ist eine Notlösung, mit der der Code wenistens durch den Compiler geht">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
das ist die gradezu klassische »Top-down«-Falle:
|
||||
|
|
@ -81472,8 +81473,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1719191229476" ID="ID_569548140" MODIFIED="1719191277058" TEXT="die Node-Invocation lief mal in einem synthetischen Test — nicht aber die Factory">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
|
|
@ -81485,13 +81485,15 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
<node CREATED="1719191778055" ID="ID_1371082096" MODIFIED="1719191794282" TEXT="Anforderungen(Neufassung)">
|
||||
<icon BUILTIN="info"/>
|
||||
<node CREATED="1719191797712" ID="ID_1137038578" MODIFIED="1719191804128" TEXT="zu bauen ist...">
|
||||
<node CREATED="1719191797712" ID="ID_1137038578" MODIFIED="1719621297162" TEXT="zu bauen ist...">
|
||||
<linktarget COLOR="#785f51" DESTINATION="ID_1137038578" ENDARROW="Default" ENDINCLINATION="-176;1183;" ID="Arrow_ID_361217776" SOURCE="ID_304611084" STARTARROW="Default" STARTINCLINATION="-429;-1581;"/>
|
||||
<node CREATED="1719191806390" ID="ID_609110451" MODIFIED="1719191818113" TEXT="Several<Lead>">
|
||||
<node CREATED="1719191846295" ID="ID_1542014602" MODIFIED="1719191855452" TEXT="ein Lead adaptiert den Verweis auf eine Vorgänger-Node"/>
|
||||
</node>
|
||||
<node CREATED="1719191882287" ID="ID_566022685" MODIFIED="1719191886228" TEXT="Several<Port>">
|
||||
<node CREATED="1719191890019" ID="ID_1557787483" MODIFIED="1719191900278" TEXT="jeder Port muß mit einem Turnout hinterlegt werden"/>
|
||||
<node CREATED="1719191910608" ID="ID_54712734" MODIFIED="1719191933305" TEXT="dieser Turnout seinerseits braucht">
|
||||
<icon BUILTIN="list"/>
|
||||
<node CREATED="1719191950473" ID="ID_371186850" MODIFIED="1719191966573" TEXT="statische Parametrisierung ⟶ WeavingPattern">
|
||||
<node CREATED="1719191968961" ID="ID_1514113056" MODIFIED="1719191984290" TEXT="hier steckt die eignetliche Aufruf-Logik"/>
|
||||
<node CREATED="1719191985094" ID="ID_864150896" MODIFIED="1719192026869" TEXT="generisch formuliert — auf die konkrete Media-Lib spezialisiert"/>
|
||||
|
|
@ -81500,18 +81502,22 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1719192180498" ID="ID_1633717544" MODIFIED="1719192201501" TEXT="Several<ref(Port)>"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1719192502501" ID="ID_918766669" MODIFIED="1719192510569" TEXT="Spec für die Output-Buffer">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1719192516511" ID="ID_258173965" MODIFIED="1719192592768" TEXT="klären: wie weden Buffer dargestellt?">
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1719192516511" ID="ID_258173965" MODIFIED="1719610194762" TEXT="klären: wie weden Buffer dargestellt?">
|
||||
<arrowlink COLOR="#df177d" DESTINATION="ID_1096257345" ENDARROW="Default" ENDINCLINATION="158;-1172;" ID="Arrow_ID_1559772795" STARTARROW="Default" STARTINCLINATION="286;142;"/>
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1719266961807" ID="ID_212820838" MODIFIED="1719266966386" TEXT="immer als BuffHandle">
|
||||
<node CREATED="1719267039599" ID="ID_339850468" MODIFIED="1719267048044" TEXT="ist leichtgewichtig">
|
||||
<node CREATED="1719267039599" ID="ID_339850468" MODIFIED="1719609922303" TEXT="ist leichtgewichtig">
|
||||
<icon BUILTIN="info"/>
|
||||
<node CREATED="1719267049029" ID="ID_1839021586" MODIFIED="1719267055704" TEXT="buff-*"/>
|
||||
<node CREATED="1719267056285" ID="ID_197481275" MODIFIED="1719267065625" TEXT="eine Metadaten-ID"/>
|
||||
<node CREATED="1719267070988" ID="ID_1327957867" MODIFIED="1719267075927" TEXT="BufferProvider back-*"/>
|
||||
</node>
|
||||
<node CREATED="1719267098792" ID="ID_333227912" MODIFIED="1719267115801" TEXT="verschiedene Provider können so in derselben Manifold gemischt werden"/>
|
||||
<node CREATED="1719267098792" ID="ID_333227912" MODIFIED="1719610137134" TEXT="verschiedene Provider können so in derselben Manifold gemischt werden">
|
||||
<arrowlink COLOR="#c25344" DESTINATION="ID_1442911620" ENDARROW="Default" ENDINCLINATION="41;3;" ID="Arrow_ID_507821712" STARTARROW="None" STARTINCLINATION="-46;101;"/>
|
||||
</node>
|
||||
<node CREATED="1719266991538" ID="ID_8146946" MODIFIED="1719267010802" TEXT="für DataSinks wird ein pseudo-BufferProvider dazwischengeschaltet">
|
||||
</node>
|
||||
<node CREATED="1719266991538" ID="ID_8146946" MODIFIED="1719609933713" TEXT="für DataSinks wird ein pseudo-BufferProvider dazwischengeschaltet">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1719267208862" ID="ID_1133348458" MODIFIED="1719269150001" TEXT="OutputSlot / DataSink gehört auf eine höhere Abstraktionsebene">
|
||||
<arrowlink COLOR="#5e0222" DESTINATION="ID_1793577189" ENDARROW="Default" ENDINCLINATION="648;-26;" ID="Arrow_ID_329940341" STARTARROW="None" STARTINCLINATION="-75;593;"/>
|
||||
<linktarget COLOR="#533f4c" DESTINATION="ID_1133348458" ENDARROW="Default" ENDINCLINATION="107;-878;" ID="Arrow_ID_208652263" SOURCE="ID_1877886821" STARTARROW="None" STARTINCLINATION="1479;81;"/>
|
||||
|
|
@ -81519,8 +81525,179 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1719269177611" ID="ID_761451539" MODIFIED="1719269196253" TEXT="das Output-Slot-Protokoll operiert auf der Ebene des Frame-Job"/>
|
||||
<node CREATED="1719269206207" ID="ID_846303339" MODIFIED="1719269232359" TEXT="für die Einzelberechnung ist das lediglich ein Zielpuffer — der bereits bereitgestellt ist"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#4b1316" CREATED="1719610088647" ID="ID_1442911620" MODIFIED="1719610302219" TEXT="aber erst für die eigentliche Invocation">
|
||||
<arrowlink COLOR="#682e40" DESTINATION="ID_45890522" ENDARROW="Default" ENDINCLINATION="20;-28;" ID="Arrow_ID_274087332" STARTARROW="None" STARTINCLINATION="-98;7;"/>
|
||||
<linktarget COLOR="#c25344" DESTINATION="ID_1442911620" ENDARROW="Default" ENDINCLINATION="41;3;" ID="Arrow_ID_507821712" SOURCE="ID_333227912" STARTARROW="None" STARTINCLINATION="-46;101;"/>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1719610195679" ID="ID_45890522" MODIFIED="1719610302219" TEXT="Spec ⟶ was man vorneweg wissen muß">
|
||||
<linktarget COLOR="#682e40" DESTINATION="ID_45890522" ENDARROW="Default" ENDINCLINATION="20;-28;" ID="Arrow_ID_274087332" SOURCE="ID_1442911620" STARTARROW="None" STARTINCLINATION="-98;7;"/>
|
||||
<node CREATED="1719610212651" ID="ID_1146415020" MODIFIED="1719610222111" TEXT="hier wird's schwierig">
|
||||
<icon BUILTIN="smiley-oh"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1719611885638" ID="ID_1918379255" MODIFIED="1719611906459" TEXT="was ist über BufferProvider bekannt?">
|
||||
<icon BUILTIN="help"/>
|
||||
<node BACKGROUND_COLOR="#c8c0b6" CREATED="1322262595850" ID="ID_1560472992" MODIFIED="1719611921052" TEXT="Implementierungs-Skizze von Nov.2011">
|
||||
<arrowlink COLOR="#797a8d" DESTINATION="ID_530710667" ENDARROW="Default" ENDINCLINATION="206;40;" ID="Arrow_ID_385887777" STARTARROW="None" STARTINCLINATION="551;-43;"/>
|
||||
<icon BUILTIN="info"/>
|
||||
<node COLOR="#435e98" CREATED="1719613411937" ID="ID_891160570" MODIFIED="1719613506789" TEXT="Interface ist komplett opaque">
|
||||
<font NAME="SansSerif" SIZE="10"/>
|
||||
</node>
|
||||
<node COLOR="#435e98" CREATED="1719613428816" ID="ID_1585539351" MODIFIED="1719613506790" TEXT="kann automatisch eine Payload-Instanz platzieren">
|
||||
<font NAME="SansSerif" SIZE="10"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1719613516196" ID="ID_626988531" MODIFIED="1719613533558" TEXT="läßt nur wenige Zusatz-Kanäle für Metadaten offen">
|
||||
<node CREATED="1719613552183" ID="ID_1654830476" MODIFIED="1719613569652" TEXT="Buffer wird für einen BufferDescriptor announced/locked">
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1719615852227" ID="ID_947471000" MODIFIED="1719615875444">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
dieser speichert einen <font face="Monospaced" color="#6d0f0f">HashVal subClassification_</font>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1719615881117" ID="ID_929196373" MODIFIED="1719615903390" TEXT="...welcher rein von der BufferProvider-Implementierung interpretiert wird"/>
|
||||
</node>
|
||||
<node CREATED="1719615905690" ID="ID_1973518590" MODIFIED="1719615924957" TEXT="es gibt aber bereits eine Festlegung für die Default-Impl">
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1719615995430" ID="ID_129950521" MODIFIED="1719616013612" TEXT="diese stellt vorkonfigurierte BufferDescriptor bereit"/>
|
||||
<node CREATED="1719616014244" ID="ID_415266367" MODIFIED="1719616026850" TEXT="welche auf ein TypeHandler-System aufsetzen"/>
|
||||
<node CREATED="1719616030377" ID="ID_1680151847" MODIFIED="1719616046987">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
siehe <font face="Monospaced" color="#5b5b82">type-handler.hpp</font>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1719616056760" ID="ID_1169211693" MODIFIED="1719616084779">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
dieser zielt darauf ab, Strukturen <i>in den Buffer </i>zu pflanzen
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1719616095807" ID="ID_51201882" MODIFIED="1719616131237" TEXT="das öffnet ganz klassich einen Pfad über einen Extension-Point">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node COLOR="#4a4398" CREATED="1719616131988" ID="ID_1396129090" MODIFIED="1719616169781" TEXT="Ha! hab ich erst gesehen, nachdem ich (routinemäßig) auf Variadics umstellte">
|
||||
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
||||
<icon BUILTIN="ksmiletris"/>
|
||||
</node>
|
||||
<node CREATED="1719616175753" ID="ID_1889117750" MODIFIED="1719616219067" TEXT="Man kann nämlich einem beliebigen Payload-Typ bestimmte ctor-Argumente »zuschieben«"/>
|
||||
<node CREATED="1719616219790" ID="ID_429009427" MODIFIED="1719618028429" TEXT="...und diese werden durch BufferProvider::announce | lock(args...) markiert">
|
||||
<linktarget COLOR="#f5ffc9" DESTINATION="ID_429009427" ENDARROW="Default" ENDINCLINATION="1094;40;" ID="Arrow_ID_229537800" SOURCE="ID_1526687578" STARTARROW="None" STARTINCLINATION="522;-24;"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1719617962418" ID="ID_70122641" MODIFIED="1719617982531" TEXT="⟹ man announced/locked einen speziellen Typ">
|
||||
<node CREATED="1719617983675" ID="ID_1366774296" MODIFIED="1719617999181" TEXT="setzt Typ-Kontext vorraus"/>
|
||||
<node CREATED="1719618000335" ID="ID_1227527067" MODIFIED="1719618019817">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
und dieser gehört zu einer <b>DomainOntology</b>
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fefc4e" COLOR="#351d75" CREATED="1719618081052" ID="ID_1722203246" LINK="#ID_1431538917" MODIFIED="1719618179422" TEXT="und hier liegt die Stärke dieses Designs">
|
||||
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#435e98" CREATED="1719618204579" ID="ID_1438180269" MODIFIED="1719618352814" TEXT="Fazit">
|
||||
<icon BUILTIN="forward"/>
|
||||
<node CREATED="1719618208890" ID="ID_553660017" MODIFIED="1719618229172" TEXT="dem BufferProvider-Interface ist das egal"/>
|
||||
<node CREATED="1719618231064" ID="ID_734757742" MODIFIED="1719618254808" TEXT="aber es gibt eine »Hintertür«">
|
||||
<node CREATED="1719618273730" ID="ID_1653762248" MODIFIED="1719618305816" TEXT="entweder über einen sub-classification-Hash"/>
|
||||
<node CREATED="1719618306381" ID="ID_1369152532" MODIFIED="1719618347084" TEXT="oder via Typ-Kontext ⟶ TypeHandler"/>
|
||||
</node>
|
||||
<node CREATED="1719618255940" ID="ID_43952927" MODIFIED="1719618908256" TEXT="diese wird erst im Nutz-Kontext aktiviert">
|
||||
<arrowlink COLOR="#5c39d5" DESTINATION="ID_166011703" ENDARROW="Default" ENDINCLINATION="21;-52;" ID="Arrow_ID_926189811" STARTARROW="None" STARTINCLINATION="-84;6;"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1719618529463" ID="ID_166011703" MODIFIED="1719618895712">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Konsequenz ⟹ die Spec legt fest <i>was </i>in den Buffer gelegt wird
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<linktarget COLOR="#5c39d5" DESTINATION="ID_166011703" ENDARROW="Default" ENDINCLINATION="21;-52;" ID="Arrow_ID_926189811" SOURCE="ID_43952927" STARTARROW="None" STARTINCLINATION="-84;6;"/>
|
||||
<node CREATED="1719618582465" ID="ID_517377374" MODIFIED="1719618753285" TEXT="und zwar als Tupel...">
|
||||
<node CREATED="1719618589495" ID="ID_1639547318" MODIFIED="1719618598224" TEXT="statisch: Payload-Typ"/>
|
||||
<node CREATED="1719618599520" ID="ID_343758452" MODIFIED="1719618615320" TEXT="dynamisch: ctor-Args"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1719618771950" ID="ID_51857699" MODIFIED="1719618816664">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
<i>leider</i> setzt das bereits die <b>Domain-Ontology</b> vorraus
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="smiley-neutral"/>
|
||||
<node CREATED="1719618938072" ID="ID_1202426063" MODIFIED="1719618977758" TEXT="leider �� Design für Henne oder Ei??"/>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1719618981642" ID="ID_746946876" MODIFIED="1719619104515" TEXT="⟹ brauche ein Bootstrap für das Design">
|
||||
<arrowlink COLOR="#412dcd" DESTINATION="ID_420782384" ENDARROW="Default" ENDINCLINATION="108;-360;" ID="Arrow_ID_317368901" STARTARROW="None" STARTINCLINATION="241;1448;"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1719619114224" ID="ID_1901204514" MODIFIED="1719619130809" TEXT="den Rahmen gegen eine Test-Ontologie aufbauen"/>
|
||||
<node CREATED="1719619164315" ID="ID_1340857572" MODIFIED="1719619192543" TEXT="diese schöpft allerdings bereits aus Kenntnis des Domänen-Horizonts"/>
|
||||
<node CREATED="1719619131805" ID="ID_714584236" MODIFIED="1719619202382" TEXT="dann mit einer ersten, echten Domänen-Ontologie anwenden (z.B. FFmpeg)"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1719620033718" ID="ID_1520044724" MODIFIED="1719620068860">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
...und zur Laufzeit wird nur noch <i>ein Stück von diesem »was« angefordert</i>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1719620337833" ID="ID_208065994" MODIFIED="1719620559086" TEXT="ein WeavingPattern für die Invocation">
|
||||
<arrowlink COLOR="#ad5890" DESTINATION="ID_8397683" ENDARROW="Default" ENDINCLINATION="-1648;-198;" ID="Arrow_ID_539070296" STARTARROW="None" STARTINCLINATION="-368;1501;"/>
|
||||
<node CREATED="1719620405448" ID="ID_1945903197" MODIFIED="1719620414667" TEXT="das ist ein Baukasten-System"/>
|
||||
<node CREATED="1719620415447" ID="ID_1834612862" MODIFIED="1719620431080" TEXT="damit werden die API-Funktionen des Turnout zusammengesetzt"/>
|
||||
<node CREATED="1719620434396" ID="ID_157008533" MODIFIED="1719620465316" TEXT="⟹ das stellt die konkrete Implementierung eines »Turnout«-Aufrufes bereit"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -81530,8 +81707,9 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1719276025136" ID="ID_607906936" MODIFIED="1719276042313" TEXT="buildPatternFor<ONT>()">
|
||||
<node CREATED="1719277198122" ID="ID_1431538917" MODIFIED="1719277212004" TEXT="ONT ist eine Domänen-Ontologie">
|
||||
<node CREATED="1719277214775" ID="ID_1364518400" MODIFIED="1719277219923" TEXT="Beispiel FFmpeg"/>
|
||||
<node CREATED="1719277220672" ID="ID_973384222" MODIFIED="1719277530648" TEXT="konkret: TestRandOntology">
|
||||
<arrowlink COLOR="#df3950" DESTINATION="ID_594112005" ENDARROW="Default" ENDINCLINATION="666;-662;" ID="Arrow_ID_801625266" STARTARROW="None" STARTINCLINATION="-521;54;"/>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1719277220672" ID="ID_973384222" MODIFIED="1719625152303" TEXT="konkret: TestRandOntology">
|
||||
<arrowlink COLOR="#df3950" DESTINATION="ID_594112005" ENDARROW="Default" ENDINCLINATION="666;-662;" ID="Arrow_ID_801625266" STARTARROW="None" STARTINCLINATION="-529;52;"/>
|
||||
<icon BUILTIN="pencil"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -85215,12 +85393,12 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1718926376090" ID="ID_1237866779" MODIFIED="1718931836347" TEXT="die WiringSituation doppelt die Relationen nochmal auf">
|
||||
<linktarget COLOR="#a05d70" DESTINATION="ID_1237866779" ENDARROW="Default" ENDINCLINATION="-821;-34;" ID="Arrow_ID_1472508814" SOURCE="ID_1034026390" STARTARROW="None" STARTINCLINATION="1345;85;"/>
|
||||
</node>
|
||||
<node CREATED="1718926456544" ID="ID_114653821" MODIFIED="1718927260591" TEXT="der tatsächlich ausführende Code ist praktisch unauffindbar">
|
||||
<node CREATED="1718926456544" ID="ID_114653821" MODIFIED="1719609866332" TEXT="der tatsächlich ausführende Code ist praktisch unauffindbar">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
man geht von ProcNode durch Connectivity, dann NodeWiring ... und wenn man Glück hat, fällt einem der Header nodeoperaton.hpp auf...  <font color="#900025">⚠ denn sonst ist der tatsächliche Einstiegspunkt mit üblichen Methoden der Code-Suche <b>praktisch nicht zu finden</b></font>: Er steckt in nodewiring.hpp in der konkreten Definition der virtuellen Funktion <font face="Monospaced" color="#3417c7">callDown()</font>  — und von dort in eine <i>dependent Method </i><font face="Monospaced" color="#7306ce">thisStep.retrieve()</font>, die tatsächlich im Template <font face="Monospaced" color="#7f0da7">ActualInvocationProcess</font> an <font face="Monospaced" color="#6f022c">STRATEGY::step()</font>  weitergereicht wird — und vermutlich ist nur mir klar, daß damit die verketteten step()-Methoden in nodeoperation.hpp gemeint sind...
|
||||
man geht von ProcNode durch Connectivity, dann NodeWiring ... und wenn man Glück hat, fällt einem der Header <font color="#494d71" face="Monospaced">nodeoperation.hpp</font>  auf...  <font color="#900025">⚠ denn sonst ist der tatsächliche Einstiegspunkt mit üblichen Methoden der Code-Suche <b>praktisch nicht zu finden</b></font>: Er steckt in nodewiring.hpp in der konkreten Definition der virtuellen Funktion <font color="#3417c7" face="Monospaced">callDown()</font>  — und von dort in eine <i>dependent Method </i><font color="#7306ce" face="Monospaced">thisStep.retrieve()</font>, die tatsächlich im Template <font color="#7f0da7" face="Monospaced">ActualInvocationProcess</font> an <font color="#6f022c" face="Monospaced">STRATEGY::step()</font>  weitergereicht wird — und vermutlich ist nur mir klar, daß damit die verketteten <font color="#5e483f" face="Monospaced">step()</font>-Methoden in <font color="#494d71" face="Monospaced">nodeoperation.hpp</font>  gemeint sind...
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
|
|
@ -85313,11 +85491,22 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1713821606607" ID="ID_492497884" MODIFIED="1713823536290" TEXT="NodeDevel_test">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1713823362710" ID="ID_66967253" MODIFIED="1719277373397" TEXT="Hilfsmittel zur Entwicklung und zum Aufbau">
|
||||
<node CREATED="1719277267208" HGAP="29" ID="ID_594112005" MODIFIED="1719277530648" TEXT="brauche eine komplette Test-Ontologie" VSHIFT="7">
|
||||
<node CREATED="1719277267208" HGAP="29" ID="ID_594112005" MODIFIED="1719625152303" TEXT="brauche eine komplette Test-Ontologie" VSHIFT="7">
|
||||
<linktarget COLOR="#df3950" DESTINATION="ID_594112005" ENDARROW="Default" ENDINCLINATION="666;-662;" ID="Arrow_ID_801625266" SOURCE="ID_973384222" STARTARROW="None" STARTINCLINATION="-529;52;"/>
|
||||
<linktarget COLOR="#ff2400" DESTINATION="ID_594112005" ENDARROW="Default" ENDINCLINATION="-136;-44;" ID="Arrow_ID_1657525718" SOURCE="ID_1706482104" STARTARROW="None" STARTINCLINATION="101;9;"/>
|
||||
<linktarget COLOR="#df3950" DESTINATION="ID_594112005" ENDARROW="Default" ENDINCLINATION="666;-662;" ID="Arrow_ID_801625266" SOURCE="ID_973384222" STARTARROW="None" STARTINCLINATION="-521;54;"/>
|
||||
<node CREATED="1719277376922" ID="ID_420782384" MODIFIED="1719277398435" TEXT="das ist zugleich ein Prüfstein für das angestrebte »generische Design«"/>
|
||||
<node CREATED="1719277401015" ID="ID_1540154009" MODIFIED="1719277423128" TEXT="muß alle Operationen bereitstellen, die für abstrakte Tests notwendig sind"/>
|
||||
<node CREATED="1719277376922" ID="ID_420782384" MODIFIED="1719625186382" TEXT="das ist zugleich ein Prüfstein für das angestrebte »generische Design«">
|
||||
<linktarget COLOR="#412dcd" DESTINATION="ID_420782384" ENDARROW="Default" ENDINCLINATION="108;-360;" ID="Arrow_ID_317368901" SOURCE="ID_746946876" STARTARROW="None" STARTINCLINATION="241;1448;"/>
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1719277401015" ID="ID_1540154009" MODIFIED="1719625180422" TEXT="muß alle Operationen bereitstellen, die für abstrakte Tests notwendig sind">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1719625209413" ID="ID_1847666799" MODIFIED="1719625223372" TEXT="per NodeLinkage_test herausfinden...">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1719625243183" ID="ID_1479244509" MODIFIED="1719625248360" TEXT="über Weiterungen nachdenken">
|
||||
<icon BUILTIN="hourglass"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -85487,6 +85676,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1719160250921" ID="ID_304611084" MODIFIED="1719160266012" TEXT="Ergebnis: gebraucht wird...">
|
||||
<arrowlink COLOR="#785f51" DESTINATION="ID_1137038578" ENDARROW="Default" ENDINCLINATION="-176;1183;" ID="Arrow_ID_361217776" STARTARROW="Default" STARTINCLINATION="-429;-1581;"/>
|
||||
<icon BUILTIN="forward"/>
|
||||
<node CREATED="1719160274852" ID="ID_1366997301" MODIFIED="1719160281511" TEXT="ein Several<Port>">
|
||||
<node CREATED="1719160369760" ID="ID_1815539399" MODIFIED="1719160384580" TEXT="hinter jedem Port liegt als Impl. eine Turnout-Instanz"/>
|
||||
|
|
@ -85494,9 +85684,10 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1719161767428" ID="ID_1653052033" MODIFIED="1719161772311" TEXT="Parametrisierung">
|
||||
<node CREATED="1719161777186" ID="ID_993267470" MODIFIED="1719161778737" TEXT="statisch">
|
||||
<node CREATED="1719162563481" ID="ID_935830932" MODIFIED="1719162567116" TEXT="WeavingPattern"/>
|
||||
<node CREATED="1719621427182" ID="ID_219988171" MODIFIED="1719621435122" TEXT="Domain-Bindung der FeedManifold"/>
|
||||
</node>
|
||||
<node CREATED="1719161779698" ID="ID_1317524079" MODIFIED="1719161781950" TEXT="dynamisch">
|
||||
<node CREATED="1719162575783" ID="ID_1992687111" MODIFIED="1719162587249" TEXT="Parameter der FeedManifold"/>
|
||||
<node CREATED="1719162575783" ID="ID_1992687111" MODIFIED="1719621442511" TEXT="Layout-Spec der FeedManifold"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1719161783769" ID="ID_1648158188" MODIFIED="1719161788109" TEXT="Operationen">
|
||||
|
|
@ -85522,9 +85713,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1719271127596" ID="ID_1128397704" MODIFIED="1719271146317" TEXT="ist in jedem Fall komplex und eine tückische Fehlerquelle"/>
|
||||
<node CREATED="1719271214216" ID="ID_398640235" MODIFIED="1719271313974" TEXT="der generische Buffer-Provider muß ohnehin ein optimiertes Pooling bieten">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...und zwar mit einer Gruppierung der Buffer nach Größe, und vermutlich auch pro Thread
|
||||
|
|
@ -85543,16 +85732,13 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1719272470222" ID="ID_1647993969" MODIFIED="1719272488848" TEXT="der Job muß davon im Zeitfenster die DataSink(s) allozieren">
|
||||
<node CREATED="1719272576443" ID="ID_1737558324" MODIFIED="1719272787633" TEXT="es können mehrere DataSinks sein">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Es kann durchaus sein, daß das jeweilige Output-System einzelne Teil-Kanäle in einem <i>planaren Format </i>haben möchte, also als einzelne, zusammenhängende Datenblöcke für jeden Kanal (Hue, Sat, Lum, bzw. Sound-L/R oder WXYZ...)
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1719272606004" ID="ID_373024645" MODIFIED="1719272632021" TEXT="in diesem Fall muß die top-Level-Node auch mehrere Output-Buffer liefern"/>
|
||||
<node CREATED="1719272633589" ID="ID_920731702" MODIFIED="1719272647394" TEXT="trotzdem muß das alles zusammen in einem Aufruf passieren"/>
|
||||
|
|
@ -85566,12 +85752,13 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1719274449895" ID="ID_246452729" MODIFIED="1719274464706" TEXT="dieses Thema wurde bisher noch nicht betrachtet">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
<node CREATED="1719274466738" ID="ID_1523555394" MODIFIED="1719274526206" TEXT="es ist aber sicherlich lösbar">
|
||||
<node CREATED="1719274466738" ID="ID_1523555394" MODIFIED="1719617878538" TEXT="es ist aber sicherlich lösbar">
|
||||
<arrowlink COLOR="#fefbbd" DESTINATION="ID_1526687578" ENDARROW="Default" ENDINCLINATION="-94;-6;" ID="Arrow_ID_1407692136" STARTARROW="None" STARTINCLINATION="-55;6;"/>
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1719274477032" ID="ID_1597306488" MODIFIED="1719274490387" TEXT="etweder über die Metadaten-Infrastruktur im BufferProvider"/>
|
||||
<node CREATED="1719274491006" ID="ID_708988075" MODIFIED="1719274516673" TEXT="oder indem man noch einen Header in den Buffer für den Cache-Entry einbaut"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1719274528595" ID="ID_1941129738" MODIFIED="1719275284591" TEXT="insofern kann man das Thema derzeit ignorieren">
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1719274528595" ID="ID_1941129738" MODIFIED="1719609535511" TEXT="insofern könnte man das Thema derzeit ignorieren">
|
||||
<arrowlink COLOR="#be5682" DESTINATION="ID_296714720" ENDARROW="Default" ENDINCLINATION="8;-27;" ID="Arrow_ID_1041581476" STARTARROW="None" STARTINCLINATION="-86;5;"/>
|
||||
<icon BUILTIN="hourglass"/>
|
||||
<node CREATED="1719274608878" ID="ID_870491160" MODIFIED="1719274632551" TEXT="zum Thema »Frame Cache« gibt es noch nichteinmal Tickets"/>
|
||||
|
|
@ -85583,23 +85770,25 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1719275318407" ID="ID_1392911369" MODIFIED="1719275366650" TEXT="das muß vor / jenseits des normalen pull()-Schemas passieren">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
warum? weil es die BufferManager-Abstraktion unterläuft
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1719275367776" ID="ID_577334967" MODIFIED="1719275640725" TEXT="insofern ist es genau eine Aufgabe für das Turnout-System">
|
||||
<arrowlink COLOR="#ac5878" DESTINATION="ID_304657123" ENDARROW="Default" ENDINCLINATION="2911;290;" ID="Arrow_ID_1615410848" STARTARROW="None" STARTINCLINATION="-968;-56;"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1719275655556" ID="ID_676493203" MODIFIED="1719275679282" TEXT="abgesehen davon: der Cache ist als ein weiterer BufferProvider „versteckt“"/>
|
||||
<node CREATED="1719275655556" ID="ID_676493203" MODIFIED="1719275679282" TEXT="abgesehen davon: der Cache ist als ein weiterer BufferProvider „versteckt“">
|
||||
<node CREATED="1719617749965" ID="ID_1526687578" MODIFIED="1719618028429" TEXT="und somit bekommen wir ein Metadaten-Problem">
|
||||
<arrowlink COLOR="#f5ffc9" DESTINATION="ID_429009427" ENDARROW="Default" ENDINCLINATION="1094;40;" ID="Arrow_ID_229537800" STARTARROW="None" STARTINCLINATION="522;-24;"/>
|
||||
<linktarget COLOR="#fefbbd" DESTINATION="ID_1526687578" ENDARROW="Default" ENDINCLINATION="-94;-6;" ID="Arrow_ID_1407692136" SOURCE="ID_1523555394" STARTARROW="None" STARTINCLINATION="-55;6;"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1719162376624" ID="ID_40367188" MODIFIED="1719162389506" TEXT="output slots"/>
|
||||
|
|
@ -85633,10 +85822,34 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1719161550685" ID="ID_435316171" MODIFIED="1719161848684" TEXT="enactTurnout(coord) ⟼ TurnoutSystem">
|
||||
<arrowlink COLOR="#4a497f" DESTINATION="ID_1464453876" ENDARROW="Default" ENDINCLINATION="-115;13;" ID="Arrow_ID_1411577361" STARTARROW="None" STARTINCLINATION="135;-7;"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1719625383125" ID="ID_1834369403" MODIFIED="1719625429986" TEXT="hier muß die Test-Ontology eingebunden werden">
|
||||
<linktarget COLOR="#bf3d87" DESTINATION="ID_1834369403" ENDARROW="Default" ENDINCLINATION="-365;21;" ID="Arrow_ID_239565642" SOURCE="ID_831247737" STARTARROW="None" STARTINCLINATION="129;-285;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1719626914799" ID="ID_1823583408" MODIFIED="1719626995786" TEXT="Aufgabe: herausfinden wie man sie verwendet">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Auf der Ebene der Implementierung ist die Domain-Ontology so etwas wie eine Typklasse — wie bildet man das in C++17 ab — und wie in C++20 ?
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1719627010609" ID="ID_1087699314" MODIFIED="1719627015478" TEXT="Beispiele durchgehen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1719627023431" ID="ID_1716372764" MODIFIED="1719627089893" TEXT="ich möchte...">
|
||||
<icon BUILTIN="list"/>
|
||||
<node CREATED="1719627040061" ID="ID_1998587021" MODIFIED="1719627050847" TEXT="Daten aus einer Mediendatei bekommen"/>
|
||||
<node CREATED="1719627051735" ID="ID_1473333794" MODIFIED="1719627068541" TEXT="Auf einen Medienstrom einen Effekt anwenden"/>
|
||||
<node CREATED="1719627077048" ID="ID_1608140531" MODIFIED="1719627084443" TEXT="einen Ergebnis-Medienstrom beziehen"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1719161555829" ID="ID_545548870" MODIFIED="1719161561707" TEXT="TurnoutSystem">
|
||||
<node CREATED="1719161702388" ID="ID_1436893233" MODIFIED="1719161707440" TEXT="Strukturen">
|
||||
<node CREATED="1719161712243" ID="ID_1205289060" MODIFIED="1719161717030" TEXT="verweis auf einen Turnout"/>
|
||||
<node CREATED="1719161712243" ID="ID_1205289060" MODIFIED="1719161717030" TEXT="Verweis auf einen Turnout"/>
|
||||
<node CREATED="1719161717906" ID="ID_1006873280" MODIFIED="1719161724315" TEXT="einen Key-Value-Store"/>
|
||||
</node>
|
||||
<node CREATED="1719161694598" ID="ID_1518897680" MODIFIED="1719161696921" TEXT="Operationen">
|
||||
|
|
@ -85659,8 +85872,14 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1718975677753" ID="ID_1527027445" MODIFIED="1718975694581" TEXT="Turnout verwendet eine Kette von WeavingPatterns"/>
|
||||
</node>
|
||||
<node CREATED="1718975296253" ID="ID_173252871" MODIFIED="1718975299600" TEXT="TurnoutSystem">
|
||||
<node CREATED="1718975300492" ID="ID_1007921082" MODIFIED="1718975308959" TEXT="arbeitet auf dem Port-Interface"/>
|
||||
<node CREATED="1718975309547" ID="ID_154889872" MODIFIED="1718975315360" TEXT="wird vom Turnout erzeugt"/>
|
||||
<node CREATED="1718975300492" ID="ID_1007921082" MODIFIED="1718975308959" TEXT="arbeitet auf dem Port-Interface">
|
||||
<node CREATED="1719621489005" ID="ID_637473391" MODIFIED="1719621515534" TEXT="ist mithin nicht generisch parametrisiert"/>
|
||||
<node CREATED="1719621495271" ID="ID_902765604" MODIFIED="1719621507191" TEXT="sondern Interface-abstrahiert"/>
|
||||
</node>
|
||||
<node CREATED="1718975309547" ID="ID_154889872" MODIFIED="1718975315360" TEXT="wird vom Turnout erzeugt">
|
||||
<node CREATED="1719621545549" ID="ID_1777820850" MODIFIED="1719621574190" TEXT="bedeutet: das Turnout injiziert hier λ-Flexibilität"/>
|
||||
<node CREATED="1719621584920" ID="ID_640762366" MODIFIED="1719621598995" TEXT="...welche beim Bauen des Node-Network angelegt wurde"/>
|
||||
</node>
|
||||
<node CREATED="1718975332631" ID="ID_607210840" MODIFIED="1718975353400" TEXT="ist selber ein Execution-Context-Builder"/>
|
||||
<node CREATED="1718975646318" ID="ID_173228319" MODIFIED="1718975652841" TEXT="bietet die Schritte">
|
||||
<node CREATED="1718975653877" ID="ID_710670497" MODIFIED="1718975655896" TEXT="mount"/>
|
||||
|
|
@ -85685,7 +85904,12 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1718975949293" ID="ID_8397683" MODIFIED="1718975957653" TEXT="noch unklar: Weaving-Patterns?">
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1719625289258" ID="ID_831247737" MODIFIED="1719625437097" TEXT="brauche test-rand-ontology.hpp als Anker/Treiber">
|
||||
<arrowlink COLOR="#bf3d87" DESTINATION="ID_1834369403" ENDARROW="Default" ENDINCLINATION="-365;21;" ID="Arrow_ID_239565642" STARTARROW="None" STARTINCLINATION="129;-285;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1718975949293" ID="ID_8397683" MODIFIED="1719620559086" TEXT="noch unklar: Weaving-Patterns?">
|
||||
<linktarget COLOR="#ad5890" DESTINATION="ID_8397683" ENDARROW="Default" ENDINCLINATION="-1648;-198;" ID="Arrow_ID_539070296" SOURCE="ID_208065994" STARTARROW="None" STARTINCLINATION="-368;1501;"/>
|
||||
<icon BUILTIN="help"/>
|
||||
</node>
|
||||
<node CREATED="1719163109733" ID="ID_783205503" MODIFIED="1719163114999" TEXT="Translation-Units">
|
||||
|
|
@ -85779,16 +86003,13 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
<node CREATED="1719176564725" ID="ID_1676094171" MODIFIED="1719176859858" TEXT="man könnte wohl den gleichen Effekt mit einer expliziteren Dependency-Injection erzielen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...weiterhin bleibt es dabei, daß der Zugang zum Buffer-Management über das Turnout-System (früher StateAdapter) läuft; aber dafür ist kein klassisches OO-Interface notwendig, sofern das Buffer-Handling seinerseits auf einem Interface aufbaut. Die Aufgabe, an der sich das entscheidet ist, wie der konkrete Turnout eine konkrete FeedManifold bauen kann (und ob er das überhaupt tut)
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -124838,6 +125059,10 @@ std::cout << tmpl.render({"what", "World"}) << s
|
|||
<node CREATED="1719248991858" ID="ID_1208921811" MODIFIED="1719249009087" TEXT="generische Schnittstelle als Zugang zu abstrahierten Buffern"/>
|
||||
<node CREATED="1719249009802" ID="ID_1115060096" MODIFIED="1719249028945" TEXT="ein konkreter Buffer-Typ wird vom client als Overlay angegeben"/>
|
||||
<node CREATED="1719249143713" ID="ID_1884572024" MODIFIED="1719249151447" TEXT="stellt ein BuffHandle bereit"/>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1322262595888" ID="ID_486247041" MODIFIED="1719248999999" TEXT="in Klärung">
|
||||
<arrowlink COLOR="#6b5acb" DESTINATION="ID_530710667" ENDARROW="Default" ENDINCLINATION="1768;327;" ID="Arrow_ID_24508834" STARTARROW="None" STARTINCLINATION="673;-23;"/>
|
||||
<icon BUILTIN="pencil"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1719249067047" ID="ID_860520674" MODIFIED="1719249077469" TEXT="OutputManager">
|
||||
<node CREATED="1719249078625" ID="ID_1793577189" MODIFIED="1719269049808" TEXT="Definition: ein konkreter Service zur Verwaltung externer Ausgaben">
|
||||
|
|
|
|||
Loading…
Reference in a new issue