BufferProvider: investigate and fix broken NodeDevel_test
The actual mystery, that could ''not'' be clarified, is why that test did pass previously. Because it was always broken, insofar it pretended that the output buffer does hold a valid test frame, while in fact the buffer is just newly allocated. The deeper reason behind this mismatch lies in the concept of ''in-place processing'' — which is a very obvious, nullary optimisation, and thus we want our engine to be ''in-place capable'' in the long run. Which explains why I did write the dummy-test operations with in-place processing in mind. Yet the actual version of the render engine leaves out a lot of future improvements, amongst others the in-place processing. This implies that — at least at the moment — it is clearly the responsibility of the processing function to prepare the output buffer, in cases where such preparation is necessary (and this applies in the case of `TestFrame`, which needs to be primed with a valid header mark) This change touches on another unsolved problem in the `TestDomainOntology`: we need a mechanism to allow the generic builder front-end to set specific configuration for some kind of processing. Generally speaking, such things are possible in C++, yet somewhat tricky — and thus I postponed that aspect and just included a configuration variant, hard-coded for the moment.
This commit is contained in:
parent
ce5f7d5e06
commit
44b3dbe682
4 changed files with 198 additions and 30 deletions
|
|
@ -35,11 +35,6 @@ using lib::zip;
|
|||
|
||||
namespace test {
|
||||
namespace ont {
|
||||
// namespace err = lumiera::error;
|
||||
|
||||
namespace { // hidden local support facilities....
|
||||
|
||||
} // (End) hidden impl details
|
||||
|
||||
/** @remark will be returned from dummyOp() */
|
||||
int dummyNum{-1};
|
||||
|
|
@ -120,11 +115,14 @@ namespace ont {
|
|||
}
|
||||
|
||||
/**
|
||||
* @param out existing allocation to place the generated TestFrame into
|
||||
* @param out existing allocation with a TestFrame to receive manipulated data
|
||||
* @param in allocation holding the input TestFrame data
|
||||
* @param param parameter to control or »mark« the data manipulation (hash-combining)
|
||||
* @remark this function emulates „media data processing“: data is processed in 64-bit words,
|
||||
* by hash-chaining with \a param. The generated result is marked with a valid checksum.
|
||||
* @note this function is _in-place capable_; `*out` must point to a valid TestFrame
|
||||
* that will never be read and only receive the result word by word, which
|
||||
* implies that this can be the same location as the input TestFrame.
|
||||
*/
|
||||
void
|
||||
manipulateFrame (TestFrame* out, TestFrame const* in, Param param)
|
||||
|
|
@ -138,12 +136,13 @@ namespace ont {
|
|||
}
|
||||
|
||||
/**
|
||||
* @param out existing allocation to receive the calculated result TestFrame
|
||||
* @param out existing allocation with a TestFrame to receive the combined data
|
||||
* @param srcA a buffer holding the input data for feed-A
|
||||
* @param srcB a buffer holding the input data for feed-B
|
||||
* @param mix degree of mixing (by integer arithmetics): 100 means 100% feed-B
|
||||
* @remark this function emulates a mixing or overlaying operation:
|
||||
* each result byte is the linear interpolation between the corresponding inputs.
|
||||
* @note similar to \ref manipulateFrame, this function is _in-place capable_.
|
||||
*/
|
||||
void
|
||||
combineFrames (TestFrame* out, TestFrame const* srcA, TestFrame const* srcB, Factr mix)
|
||||
|
|
|
|||
|
|
@ -76,6 +76,20 @@ namespace test {
|
|||
const Literal DUMMY_PROC_ID{"op(int)"};
|
||||
|
||||
|
||||
/** prime a working buffer so that it holds some valid TestFrame.
|
||||
* @param src a source buffer to copy, when given
|
||||
* @warning contents of the target buffer will be overwritten.
|
||||
*/
|
||||
inline void
|
||||
initBuff (TestFrame* buff, TestFrame const* src = nullptr)
|
||||
{
|
||||
REQUIRE (buff);
|
||||
if (not src)
|
||||
src = & testData(0,0);
|
||||
new(buff) TestFrame{*src};
|
||||
}
|
||||
|
||||
|
||||
/** produce sequences of frames with (reproducible) random data */
|
||||
void generateFrame (TestFrame* buff, FraNo frameNr =0, Flavr flavour =0);
|
||||
|
||||
|
|
@ -128,7 +142,9 @@ namespace test {
|
|||
|
||||
|
||||
|
||||
|
||||
/** _common core_ of the configuration.
|
||||
* to be extended for each special form of processing.
|
||||
*/
|
||||
struct TestRandOntology::Spec
|
||||
: util::Cloneable
|
||||
{
|
||||
|
|
@ -145,6 +161,18 @@ namespace test {
|
|||
{ }
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Generic front-End for the client to setup some processing,
|
||||
* and to qualify and configure possible flavours and variations.
|
||||
* Invoke the _terminal operations_ to get a processing function
|
||||
* or similar config artifacts that can be passed to a NodeBuilder.
|
||||
* @tparam CONF specialised config for some form of processing.
|
||||
* @todo 4/2026 unsolved problem: how can the Builder expose
|
||||
* setters to adapt special aspects of some processing,
|
||||
* as opposed to control elements that are present in
|
||||
* any kind of config / spec...?
|
||||
*/
|
||||
template<class CONF>
|
||||
class TestRandOntology::Builder
|
||||
: public Spec
|
||||
|
|
@ -205,6 +233,7 @@ namespace test {
|
|||
|
||||
Param filter = 0;
|
||||
string streamType;
|
||||
bool procInplace{false};
|
||||
|
||||
ConfMan(Spec const& spec)
|
||||
: streamType{spec.BASE_TYPE}
|
||||
|
|
@ -213,9 +242,12 @@ namespace test {
|
|||
auto
|
||||
binding()
|
||||
{
|
||||
return [offset = filter]
|
||||
return [offset = filter
|
||||
,inplace = procInplace]
|
||||
(Param par, TestFrame const* in, TestFrame* out)
|
||||
{
|
||||
if (not inplace)
|
||||
initBuff (out, in);
|
||||
manipulateFrame (out, in, par);
|
||||
};
|
||||
}
|
||||
|
|
@ -246,6 +278,7 @@ namespace test {
|
|||
return []
|
||||
(Factr mix, InFeed inChan, TestFrame* out)
|
||||
{
|
||||
initBuff (out);
|
||||
combineFrames (out, inChan[0],inChan[1], mix);
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -326,7 +326,7 @@ namespace test {
|
|||
BuffHandle buffHandle = provider.lockBuffer (provider.getDescriptorFor(sizeof(TestFrame)));
|
||||
uint port{0};
|
||||
|
||||
CHECK (not buffHandle.accessAs<TestFrame>().isSane());
|
||||
CHECK (not buffHandle.accessAs<TestFrame>().isSane()); // no valid data yet in the buffer...
|
||||
|
||||
// Trigger Node invocation...
|
||||
buffHandle = node.pull (port, buffHandle, Time::ZERO, ProcessKey{0});
|
||||
|
|
@ -375,7 +375,7 @@ namespace test {
|
|||
// generate a binding as processing-functor
|
||||
auto procFun = spec.makeFun();
|
||||
using Sig = lib::meta::_Fun<decltype(procFun)>::Sig;
|
||||
CHECK (showType<Sig>() == "void (ulong, engine::TestFrame const*, engine::TestFrame*)"_expect);
|
||||
CHECK (showType<Sig>() == "void (ulong, TestFrame const*, TestFrame*)"_expect);
|
||||
|
||||
// Results can be verified by ont::manipulateFrame() — see above
|
||||
size_t frameNr = defaultGen.u64();
|
||||
|
|
@ -449,8 +449,8 @@ namespace test {
|
|||
// generate a binding as processing-functor
|
||||
auto procFun = spec.makeFun();
|
||||
using Sig = lib::meta::_Fun<decltype(procFun)>::Sig;
|
||||
CHECK (showType<Sig>() == "void (double, array<engine::TestFrame const*, 2ul>, "
|
||||
"engine::TestFrame*)"_expect); //^^/////////////////TICKET #1391 needlessly rendered as `long`
|
||||
CHECK (showType<Sig>() == "void (double, array<TestFrame const*, 2ul>, "
|
||||
"TestFrame*)"_expect); //^^///////////////////////////////TICKET #1391 needlessly rendered as `long`
|
||||
size_t frameNr = defaultGen.u64();
|
||||
uint flavour = defaultGen.u64();
|
||||
double mix = defaultGen.uni();
|
||||
|
|
|
|||
|
|
@ -111338,6 +111338,25 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
<node CREATED="1732852977368" ID="ID_1396802326" MODIFIED="1736123587199" TEXT="Varianten dann als smart-PImpl"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1776038185488" ID="ID_1303326184" MODIFIED="1776038199366" TEXT="offen / ungelöst">
|
||||
<icon BUILTIN="bell"/>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1776038202100" ID="ID_390330463" MODIFIED="1776038352831" TEXT="wie kann der Builder spezielle Aspekte konfigurierbar machen?">
|
||||
<linktarget COLOR="#ac0e1c" DESTINATION="ID_390330463" ENDARROW="Default" ENDINCLINATION="-1612;75;" ID="Arrow_ID_1622958105" SOURCE="ID_1314154398" STARTARROW="None" STARTINCLINATION="-949;-41;"/>
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1776038541385" ID="ID_1301465945" MODIFIED="1776038555675" TEXT="bisher definiert er nur die Terminal-Operationen"/>
|
||||
<node CREATED="1776038557007" ID="ID_1741840673" MODIFIED="1776038587575" TEXT="man möchte aber die Conf anpassen könnnen"/>
|
||||
<node CREATED="1776038589754" ID="ID_945656584" MODIFIED="1776038625211" TEXT="und das stellt eine gewisse Hürde dar...">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...da die Conf bewußt <i>nicht uniform</i> ist, sondern mehr sowas wie ein Concept
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1736120728615" ID="ID_1716702522" MODIFIED="1739117933166" TEXT="bietet Test-Primitive">
|
||||
<icon BUILTIN="yes"/>
|
||||
|
|
@ -117719,9 +117738,9 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
<node CREATED="1770588964880" ID="ID_692469584" MODIFIED="1770588990867" TEXT="TrackingHeapBlockProvider ⟼ HeapMemProvider"/>
|
||||
<node CREATED="1770590017550" ID="ID_1783096429" MODIFIED="1770590027209" TEXT="einfache Verwendungen direkt darauf abstellen"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1770590030827" ID="ID_995145745" MODIFIED="1770835372155" TEXT="Schritt-2 : Tracking abstrahieren">
|
||||
<node COLOR="#338800" CREATED="1770590030827" ID="ID_995145745" MODIFIED="1776041905341" TEXT="Schritt-2 : Tracking abstrahieren">
|
||||
<linktarget COLOR="#396eac" DESTINATION="ID_995145745" ENDARROW="Default" ENDINCLINATION="4;-850;" ID="Arrow_ID_468011216" SOURCE="ID_1846831481" STARTARROW="None" STARTINCLINATION="-239;11;"/>
|
||||
<icon BUILTIN="pencil"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#4e0f5b" CREATED="1770590041763" FOLDED="true" ID="ID_707087059" MODIFIED="1770826874642" TEXT="DiagnosticBufferProvider als Wrapper redefinieren">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<icon BUILTIN="button_cancel"/>
|
||||
|
|
@ -119369,8 +119388,8 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1771335613418" ID="ID_389403594" MODIFIED="1771354255277" TEXT="an dieser Stelle: Status-quo bestätigen">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#338800" CREATED="1771335613418" ID="ID_389403594" MODIFIED="1776041895459" TEXT="an dieser Stelle: Status-quo bestätigen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1771335628925" ID="ID_832109359" MODIFIED="1771372132494" TEXT="die beiden Test-Fälle aufräumen">
|
||||
<arrowlink COLOR="#445360" DESTINATION="ID_1793741597" ENDARROW="Default" ENDINCLINATION="-400;726;" ID="Arrow_ID_389390476" STARTARROW="Default" STARTINCLINATION="60;-1173;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
|
|
@ -119715,10 +119734,11 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1772580027608" ID="ID_17159989" MODIFIED="1772580041236" STYLE="fork" TEXT="NodeDevel_test gebrochen">
|
||||
<node COLOR="#435e98" CREATED="1772580027608" FOLDED="true" ID="ID_17159989" MODIFIED="1776041917355" STYLE="fork" TEXT="NodeDevel_test gebrochen">
|
||||
<font NAME="SansSerif" SIZE="12"/>
|
||||
<icon BUILTIN="broken-line"/>
|
||||
<node CREATED="1772580043203" ID="ID_1564270895" MODIFIED="1772580049365" TEXT="Testfall: testRand_buildFilterNode()">
|
||||
<node CREATED="1772580043203" ID="ID_1564270895" MODIFIED="1776041136751" TEXT="Testfall: testRand_buildFilterNode()">
|
||||
<icon BUILTIN="info"/>
|
||||
<node CREATED="1772580051298" ID="ID_1770027833" MODIFIED="1772580064370" TEXT="das ist der erste »substantielle« Integrations-Testfall"/>
|
||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1772580065781" ID="ID_981982347" MODIFIED="1772580093881" TEXT="Symptom: invalider Output-Buffer">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
|
|
@ -119745,8 +119765,34 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1772580243636" ID="ID_1772869914" MODIFIED="1772580276111" TEXT="Vermutung: da es der Output-Buffer ist, könnte es direkt mit dem Umbau zusammenhängen">
|
||||
<icon BUILTIN="idea"/>
|
||||
<node COLOR="#5b280f" CREATED="1772580243636" ID="ID_1772869914" MODIFIED="1776041149785">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Vermutung: da es der <i>Output-Buffer</i> ist,
|
||||
</p>
|
||||
<p>
|
||||
könnte es direkt mit dem Umbau zusammenhängen
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="button_cancel"/>
|
||||
<node COLOR="#435e98" CREATED="1776041152591" HGAP="40" ID="ID_1697651753" MODIFIED="1776041195931" TEXT="(nein das war es nicht)" VSHIFT="17">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...der Umbau hat vermutlich nur ein latentes Problem aufgedeckt, insofern der Test auch bisher schon auf uninitialisiertem Speicher lief
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<font NAME="SansSerif" SIZE="10"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#dfd4c1" COLOR="#6b01a5" CREATED="1776028997173" ID="ID_678626087" MODIFIED="1776041017837" TEXT="genauer anschauen (Debugger)">
|
||||
<icon BUILTIN="forward"/>
|
||||
<node CREATED="1772580361639" ID="ID_670863367" MODIFIED="1772580393253" TEXT="der Testfall verwendet den high-level Zugang per EngineCtx">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
|
|
@ -119761,10 +119807,10 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
<node CREATED="1772580462582" ID="ID_1698761525" MODIFIED="1772580479814" TEXT="die Buffer-Addresse kommt unten im Aufruf korrekt an">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1772580483689" ID="ID_1718534673" MODIFIED="1772580551967" TEXT="⟹ Buffer vom Test-Setup her nicht initialisiert">
|
||||
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1772580483689" FOLDED="true" ID="ID_1718534673" MODIFIED="1772580483689" TEXT="⟹ Buffer vom Test-Setup her nicht initialisiert">
|
||||
<icon BUILTIN="clanbomber"/>
|
||||
<node CREATED="1772580523957" ID="ID_908318379" MODIFIED="1772580539683" TEXT="das wird sogar Asserted (ist also erwartet)"/>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1772580556946" ID="ID_1418529434" MODIFIED="1772580582793" TEXT="wo in der Node-pull()-Logik hätte der Buffer initialisiert werden sollen?">
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1772580556946" ID="ID_1418529434" MODIFIED="1776041107229" TEXT="wo in der Node-pull()-Logik hätte der Buffer initialisiert werden sollen?">
|
||||
<font NAME="SansSerif" SIZE="12"/>
|
||||
<icon BUILTIN="help"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1772580613906" ID="ID_1766680714" MODIFIED="1772580674329" TEXT="laut Test-Fixture: gar nicht">
|
||||
|
|
@ -119909,8 +119955,9 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1772678532662" ID="ID_1254112089" MODIFIED="1772678561874" TEXT="damit zusammenhängende Neben-Frage: ist die TestRandOntology für TestFrame zuständig?">
|
||||
<node COLOR="#5b280f" CREATED="1772678532662" ID="ID_1254112089" MODIFIED="1776035705729" TEXT="damit zusammenhängende Neben-Frage: ist die TestRandOntology für TestFrame zuständig?">
|
||||
<icon BUILTIN="help"/>
|
||||
<icon BUILTIN="button_cancel"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1772678572301" ID="ID_969290683" MODIFIED="1772679076713" TEXT="das hier ist ja nur ein modellhaftes Setup">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
|
|
@ -119924,22 +119971,111 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
</node>
|
||||
<node CREATED="1772678588893" ID="ID_1625895951" MODIFIED="1772678646454" TEXT="wenn TestFrame ein »Inlay« wäre, das zur Ontology gehört...."/>
|
||||
<node CREATED="1772678647795" ID="ID_766992048" MODIFIED="1772678651467" TEXT="...dann könnte man einen getypten Buffer verlangen"/>
|
||||
<node CREATED="1772678653490" ID="ID_640199025" MODIFIED="1772678678587" TEXT="Alternative: TestFrame ist ein Dateninhalt, der von der Implementierungs-Library erzeugt wird"/>
|
||||
<node CREATED="1772678653490" ID="ID_640199025" MODIFIED="1776035701517" TEXT="Alternative: TestFrame ist ein Dateninhalt, der von der Implementierungs-Library erzeugt wird">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
das entspricht mehr der Weise, in der die Test-Rand-Ontology die Struktur einer Medien-Verarbeitungs-Library nachbildet
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="forward"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1772677979715" ID="ID_974445691" MODIFIED="1772678040044" TEXT="⟹ TODO : in-Place-fähige Funktion richtig einbinden">
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1772677979715" ID="ID_974445691" MODIFIED="1776041091571" TEXT="⟹ TODO : in-Place-fähige Funktion richtig einbinden">
|
||||
<arrowlink COLOR="#32476d" DESTINATION="ID_1882974895" ENDARROW="Default" ENDINCLINATION="0;-58;" ID="Arrow_ID_584031539" STARTARROW="None" STARTINCLINATION="-450;24;"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1772678043698" ID="ID_231080001" MODIFIED="1772678054563" TEXT="überlegen ob man das irgendwo auf dem Deskriptor ausdrückt"/>
|
||||
<icon BUILTIN="hourglass"/>
|
||||
<node CREATED="1772678043698" ID="ID_231080001" MODIFIED="1772678054563" TEXT="überlegen ob man das irgendwo auf dem Deskriptor ausdrückt">
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1776036803044" ID="ID_538217187" MODIFIED="1776036811829" TEXT="wie war das denn gemeint?">
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1776038267626" ID="ID_1314154398" MODIFIED="1776038427571" TEXT="gar nicht....">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Vor einem Jahr, als ich den »umgepolten« Entwurf zur Renderengine zustande gebracht habe, hat es mir genügt, <i>irgendwie brauchbare Processing-Funktionen zu bekommen.</i>
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<arrowlink COLOR="#ac0e1c" DESTINATION="ID_390330463" ENDARROW="Default" ENDINCLINATION="-1612;75;" ID="Arrow_ID_1622958105" STARTARROW="None" STARTINCLINATION="-949;-41;"/>
|
||||
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
||||
</node>
|
||||
<node CREATED="1776038429611" ID="ID_345739942" MODIFIED="1776038509373" TEXT="das Design sieht einen Builder vor (der bisher fast nicht genutzt wird)">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...er hat nur die generischen Terminal-Funktionen
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
makeFun()
|
||||
</li>
|
||||
<li>
|
||||
procID()
|
||||
</li>
|
||||
<li>
|
||||
nodeID()
|
||||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1776038634561" ID="ID_1616543622" MODIFIED="1776040940805" TEXT="also sinngemäß ⟹ das weiterreichende Problem vertagen">
|
||||
<arrowlink COLOR="#4e2dc4" DESTINATION="ID_1710559503" ENDARROW="Default" ENDINCLINATION="168;8;" ID="Arrow_ID_1648218062" STARTARROW="None" STARTINCLINATION="-166;46;"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1776038664173" ID="ID_1963584158" MODIFIED="1776038674333" TEXT="nur eine Flag in die Conf einbauen"/>
|
||||
<node CREATED="1776038684702" ID="ID_741197789" MODIFIED="1776038698543" TEXT="diese auf »nicht-inplace« vorkonfigurieren"/>
|
||||
<node COLOR="#7f1951" CREATED="1776038701755" ID="ID_1261939184" MODIFIED="1776038722087" TEXT="(und auf die spätere Erleuchtung hoffen)">
|
||||
<font NAME="SansSerif" SIZE="10"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1772678055985" ID="ID_1445790" MODIFIED="1772678080954" TEXT="vorläufig können wir kein in-Place-processing">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1772678083213" ID="ID_842562388" MODIFIED="1772678115270" TEXT="daher muß der Adapter ConfMan::binding() einen neuen Test-Frame erzeugen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1772678083213" ID="ID_842562388" MODIFIED="1776040841550" TEXT="daher muß der Adapter ConfMan::binding() einen neuen Test-Frame erzeugen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1776040696429" ID="ID_1897997813" MODIFIED="1776040812427" TEXT="schaffe neue Basis-Funktion ont::initBuff()">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
diese bekommt einen Zielpuffer und optional einen Quellpuffer und kopiert einfach den TestFrame aus dem Quellpuffer — was uns ganz banal einen validen Header liefert, und doch etwas effizienter sein dürfte, als nochmal die Daten zu generieren. Geht wohl nicht anders, denn ich habe TestFrame ziemlich »zugedengelt« und opaque gemacht.
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1776040814400" ID="ID_813791357" MODIFIED="1776040827926" TEXT="sehe zumindest for ConfMan eine flexible Konfig vor"/>
|
||||
<node CREATED="1776040829154" ID="ID_649147081" MODIFIED="1776040836360" TEXT="...die aber derzeit noch nicht gesetzt werden kann"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1776040842854" ID="ID_233813848" MODIFIED="1776040871354" TEXT="auch ConfMix hat das gleiche Design-Problem — löse es analog">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node CREATED="1776040892893" ID="ID_1710559503" MODIFIED="1776040972179">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
also nur <i>halb engageiert</i> ... <font size="2" color="#782493">und das Design-Problem vertagt</font>
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<linktarget COLOR="#4e2dc4" DESTINATION="ID_1710559503" ENDARROW="Default" ENDINCLINATION="168;8;" ID="Arrow_ID_1648218062" SOURCE="ID_1616543622" STARTARROW="None" STARTINCLINATION="-166;46;"/>
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1776041024498" ID="ID_1882974895" MODIFIED="1776041085553" TEXT="mit diesem Fix läuft der Test">
|
||||
<linktarget COLOR="#32476d" DESTINATION="ID_1882974895" ENDARROW="Default" ENDINCLINATION="0;-58;" ID="Arrow_ID_584031539" SOURCE="ID_974445691" STARTARROW="None" STARTINCLINATION="-450;24;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#435e98" CREATED="1776041039141" ID="ID_1980820402" MODIFIED="1776041050065" TEXT="auch etwas Doku nachgetragen"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -144072,9 +144208,9 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
</node>
|
||||
<node COLOR="#338800" CREATED="1773934250649" ID="ID_1023733837" MODIFIED="1774219522013" TEXT="Umstellen der DataSink">
|
||||
<arrowlink COLOR="#2f56b3" DESTINATION="ID_848279587" ENDARROW="Default" ENDINCLINATION="-42;-865;" ID="Arrow_ID_998347051" STARTARROW="Default" STARTINCLINATION="-663;70;"/>
|
||||
<linktarget COLOR="#498ad6" DESTINATION="ID_1023733837" ENDARROW="Default" ENDINCLINATION="-757;-817;" ID="Arrow_ID_867939478" SOURCE="ID_784653137" STARTARROW="None" STARTINCLINATION="888;64;"/>
|
||||
<linktarget COLOR="#4a697c" DESTINATION="ID_1023733837" ENDARROW="Default" ENDINCLINATION="31;-117;" ID="Arrow_ID_50406176" SOURCE="ID_1909698021" STARTARROW="None" STARTINCLINATION="-24;182;"/>
|
||||
<linktarget COLOR="#498ad6" DESTINATION="ID_1023733837" ENDARROW="Default" ENDINCLINATION="-757;-817;" ID="Arrow_ID_534861876" SOURCE="ID_926670050" STARTARROW="None" STARTINCLINATION="688;37;"/>
|
||||
<linktarget COLOR="#498ad6" DESTINATION="ID_1023733837" ENDARROW="Default" ENDINCLINATION="-757;-817;" ID="Arrow_ID_867939478" SOURCE="ID_784653137" STARTARROW="None" STARTINCLINATION="888;64;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1773934262265" ID="ID_1065611224" MODIFIED="1773934275092" TEXT="möglichst das sichtbare API nicht anpassen">
|
||||
<node CREATED="1773934291293" ID="ID_736836401" MODIFIED="1773934304615" TEXT="AllocState ist erst der OutputSlot-Impl bekannt"/>
|
||||
|
|
|
|||
Loading…
Reference in a new issue