This investigation started out as solving an already solved problem... I'll continue this as a design exercise non the less. __Some explanation__: To achieve the goal of invoking a Node end-to-end, the gap between the `Port` API, the `ProcNode` API and the `RenderInvocation` must be closed. This leads to questions of API design: ''what core operation should the `ProcNode` API expose?'' * is `ProcNode` just a forwarding / delegating container and becoming redundant? * or does the API rather move in the direction of an ''Exit Node''? This leads to the question how the opened `OutputSlot` can be exposed as a `BuffHandle` to allow to set off the recursive Node invocation. As it turns out, the onerous for this step lies on the actual `OutputSlot` implementation, since the API and output protocol already requires to expose a `BuffHandle`. Yet there is no "real" implementation available, just a Mock setup based on `DiagnosticBufferProvider`, which obviously can just be passed-through. Which leaves me with mixed feelings. For one it is conveninent to skip this topic for now, but on the other hand the design of `BufferProvider` does not seem well suited for such an proxying task. Thus I decided to explore this aspect in the form of a prototyping test....
55 lines
1.3 KiB
C++
55 lines
1.3 KiB
C++
/*
|
||
BufferProxyProvider - Adapt existing allocation for access through the Buffer protocol
|
||
|
||
Copyright (C)
|
||
2024, Hermann Vosseler <Ichthyostega@web.de>
|
||
|
||
**Lumiera** 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. See the file COPYING for further details.
|
||
|
||
* *****************************************************************/
|
||
|
||
|
||
/** @file buffer-proxy-provider.cpp
|
||
** Implementation details of a forwarding BufferProvider stub implementation.
|
||
*/
|
||
|
||
|
||
#include "lib/error.hpp"
|
||
#include "steam/engine/buffer-proxy-provider.hpp"
|
||
//#include "steam/engine/buffer-metadata.hpp"
|
||
//#include "lib/util.hpp"
|
||
|
||
//using util::isSameAdr;
|
||
|
||
namespace steam {
|
||
namespace engine {
|
||
|
||
// storage for the default-marker constants
|
||
// const TypeHandler TypeHandler::RAW{};
|
||
|
||
|
||
namespace { // impl. details and definitions
|
||
|
||
// const uint DEFAULT_DESCRIPTOR = 0;
|
||
|
||
}
|
||
|
||
|
||
/** build a new
|
||
*/
|
||
// BufferProvider::BufferProvider (Literal implementationID)
|
||
// : meta_(new BufferMetadata (implementationID))
|
||
// { }
|
||
//
|
||
// BufferProvider::~BufferProvider() { }
|
||
|
||
|
||
/** @internal verify the given descriptor.
|
||
*/
|
||
|
||
|
||
|
||
}} // namespace engine
|