diff --git a/src/steam/engine/node-builder.hpp b/src/steam/engine/node-builder.hpp
index 18fabd513..3afc11253 100644
--- a/src/steam/engine/node-builder.hpp
+++ b/src/steam/engine/node-builder.hpp
@@ -91,6 +91,7 @@
#define ENGINE_NODE_BUILDER_H
+#include "steam/engine/weaving-pattern-builder.hpp"
#include "steam/engine/proc-node.hpp"
#include "steam/engine/turnout.hpp"
#include "lib/several-builder.hpp"
@@ -107,10 +108,7 @@ namespace engine {
using std::forward;
- namespace { // policy configuration for allocator
-
- template class ALO =std::void_t, typename...INIT>
- using AlloPolicySelector = lib::allo::SetupSeveral;
+ namespace { // default policy configuration to use heap allocator
struct UseHeapAlloc
{
@@ -118,23 +116,13 @@ namespace engine {
using Policy = lib::allo::HeapOwn;
};
//
- }//(End) internal policy configuration
+ }//(End) policy
/**
- * Convenience builder to collect working data.
+ * A builder to collect working data.
* Implemented through a suitable configuration of lib::SeveralBuilder,
- * such as to embed and connect to the configured custom allocator, which
- * serves the goal to package all generated node configuration data together
- * into a compact memory block, which can be discarded in bulk, once a given
- * segment of the low-level-Model has been superseded.
- * @tparam POL policy configuration pick the desired allocator
- * @tparam I interface type for lib::Several
- * @remark in essence, this wrapper class creates the following setup
- * \code
- * makeSeveral()
- * .withAllocator (args...);
- * \endcode
+ * with a policy configuration parameter to define the allocator to use.
*/
template
using DataBuilder = lib::SeveralBuilder;
@@ -193,7 +181,7 @@ namespace engine {
auto
withAllocator (INIT&& ...alloInit)
{
- using AllocatorPolicy = AlloPolicySelector;
+ using AllocatorPolicy = lib::allo::SetupSeveral;
return NodeBuilder{forward(alloInit)...};
}
diff --git a/src/steam/engine/turnout.hpp b/src/steam/engine/turnout.hpp
index a0e2f31d5..b181362bc 100644
--- a/src/steam/engine/turnout.hpp
+++ b/src/steam/engine/turnout.hpp
@@ -71,7 +71,6 @@
//#include "lib/time/timevalue.hpp"
//#include "lib/linked-elements.hpp"
#include "lib/several.hpp"
-#include "lib/several-builder.hpp"/////////////////TODO extract with a WeavingPattern builder
//#include "lib/util-foreach.hpp"
//#include "lib/iter-adapter.hpp"
#include "lib/meta/function.hpp"
@@ -413,13 +412,16 @@ namespace engine {
static_assert (_verify_usable_as_InvocationAdapter());
- uint fanIn{0};
- uint fanOut{0};
-
Several leadPort;
- Several outDescr;
+ Several outTypes;
//////////////////////////////////////////OOO builder must set-up those descriptors
+ SimpleWeavingPattern(Several&& pr, Several dr)
+ : CONF{}
+ , leadPort{move(pr)}
+ , outTypes{move(dr)}
+ { }
+
Feed
mount()
@@ -430,7 +432,7 @@ namespace engine {
void
pull (Feed& feed, TurnoutSystem& turnoutSys)
{
- for (uint i=0; i
- using SimpleDirectInvoke = SimpleWeavingPattern>;
-
- template
- struct SimpleWeavingBuilder
- : Turnout> /////////////////////////////////OOO can no longer directly inherit from the product(Turnout), due to SeveralBuilder!!!
- {
- SimpleWeavingBuilder
- attachToLeadPort(ProcNode& lead, uint portNr)
- {
- ASSERT (this->fanIn < N);
- PortRef leadPort; /////////////////////////////////////OOO TODO need Accessor on ProcNode!!!!!
- this->leadPort.createAt(this->fanIn, leadPort)
- ++(this->fanIn);
- return move(*this);
- }
-
- Turnout>
- build()
- {
- ///////////////////////////////OOO need a way to prepare SeveralBuilder-instances for leadPort and outDescr --> see NodeBuilder
- return move(*this);
- }
- };
-/////////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1367 : (End)Prototyping: how to assemble a Turnout
diff --git a/src/steam/engine/weaving-pattern-builder.hpp b/src/steam/engine/weaving-pattern-builder.hpp
new file mode 100644
index 000000000..c963d034d
--- /dev/null
+++ b/src/steam/engine/weaving-pattern-builder.hpp
@@ -0,0 +1,105 @@
+/*
+ WEAVING-PATTERN-BUILDER.hpp - build an invocation pattern for media calculations
+
+ Copyright (C) Lumiera.org
+ 2024, Hermann Vosseler
+
+ 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 weaving-pattern-builder.hpp
+ ** Construction kit for establishing an invocation scheme for media calculations.
+ **
+ ** @see turnout.hpp
+ ** @see node-builder.hpp
+ ** @see NodeLinkage_test
+ **
+ ** @todo WIP-WIP-WIP as of 7/2024 prototyping how to build and invoke render nodes /////////////////////////TICKET #1367
+ **
+ */
+
+
+#ifndef STEAM_ENGINE_WEAVING_PATTERN_BUILDER_H
+#define STEAM_ENGINE_WEAVING_PATTERN_BUILDER_H
+
+//#include "steam/common.hpp"
+//#include "steam/engine/channel-descriptor.hpp"
+//#include "vault/gear/job.h"
+#include "lib/several-builder.hpp"
+#include "steam/engine/turnout.hpp"
+//#include "lib/util-foreach.hpp"
+//#include "lib/iter-adapter.hpp"
+//#include "lib/meta/function.hpp"
+//#include "lib/itertools.hpp"
+//#include "lib/util.hpp"
+
+//#include
+//#include
+
+
+namespace steam {
+namespace engine {
+
+ using std::forward;
+ using lib::Several;
+
+ template
+ using DataBuilder = lib::SeveralBuilder;
+
+
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1367 : Prototyping: how to assemble a Turnout
+ template
+ using SimpleDirectInvoke = SimpleWeavingPattern>;
+
+ template
+ struct SimpleWeavingBuilder
+ : util::MoveOnly
+ {
+ DataBuilder leadPort;
+ DataBuilder outTypes;
+
+ SimpleWeavingBuilder
+ attachToLeadPort(ProcNode& lead, uint portNr)
+ {
+ PortRef portRef; /////////////////////////////////////OOO TODO need Accessor on ProcNode!!!!!
+ leadPort.emplace (portRef);
+ ENSURE (leadPort.size() < N);
+ return move(*this);
+ }
+
+ SimpleWeavingBuilder
+ appendBufferTypes(size_t cnt, BuffDescr const& descriptor)
+ {
+ outTypes.fillElm (cnt, descriptor);
+ ENSURE (outTypes.size() < N);
+ return move(*this);
+ }
+
+ auto
+ build()
+ {
+ using Product = Turnout>;
+ ///////////////////////////////OOO need a way to prepare SeveralBuilder-instances for leadPort and outDescr --> see NodeBuilder
+ return Product{leadPort.build(), outTypes.build};
+ }
+ };
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1367 : (End)Prototyping: how to assemble a Turnout
+
+
+
+}}// namespace steam::engine
+#endif /*STEAM_ENGINE_WEAVING_PATTERN_BUILDER_H*/
diff --git a/wiki/thinkPad.ichthyo.mm b/wiki/thinkPad.ichthyo.mm
index bb5b88b09..eae573a44 100644
--- a/wiki/thinkPad.ichthyo.mm
+++ b/wiki/thinkPad.ichthyo.mm
@@ -3365,9 +3365,7 @@
-
-
-
+
...dann sind wir sofort tot und das wird billigend in Kauf genommen.
@@ -3814,9 +3812,7 @@
-
-
-
+
bisher können wir das GUI nur aktiv intern schließen,
@@ -3884,9 +3880,7 @@
-
-
-
+
...das war genau der Kern der "Plugin-Debatte".
@@ -3975,9 +3969,7 @@
-
-
-
+
...nur eine heuristische Vermutung von mir
@@ -4638,9 +4630,7 @@
-
-
-
+
Einfachen Aufruf
@@ -6056,9 +6046,7 @@
-
-
-
+
den Klassennamen ohne das Namespace-Präfix "GTK", und alles lower case.
@@ -7706,9 +7694,7 @@
-
-
-
+
verbleibende
@@ -10255,9 +10241,7 @@
-
-
-
+
...da gibt es eine explizite Ausnahme-Regel.
@@ -81668,6 +81652,25 @@ Date: Thu Apr 20 18:53:17 2023 +0200
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -87680,8 +87683,8 @@ Date: Thu Apr 20 18:53:17 2023 +0200
-
-
+
+
@@ -87790,8 +87793,7 @@ Date: Thu Apr 20 18:53:17 2023 +0200
diese Policy ist ein einfacher Typparameter
-
-
+
@@ -87810,8 +87812,7 @@ Date: Thu Apr 20 18:53:17 2023 +0200
using AllocatorPolicy = AlloPolicySelector<ALO,INIT...>;
-
-
+
@@ -87822,8 +87823,7 @@ Date: Thu Apr 20 18:53:17 2023 +0200
⟶ withAllocator<ALO> (INIT&& ...)
-
-
+
@@ -87831,6 +87831,33 @@ Date: Thu Apr 20 18:53:17 2023 +0200
+
+
+
+
+
+
+
+
+ UseHeapAlloc ⟵ default-Policy für alle Builder
+
+
+
+
+
+
+
+
+
+
+ ...vermutlich wird es irgendwann so eine Art »Builder-Framework« geben, und dorthin gehören dann solche Definitionen. Derzeit kann ich hierfür noch keine sinnvolle Code-Struktur festlegen
+
+
+
+
+
+
+
@@ -88364,8 +88391,16 @@ Date: Thu Apr 20 18:53:17 2023 +0200
-
-
+
+
+
+
+
+
+
+
+
+
@@ -88411,6 +88446,11 @@ Date: Thu Apr 20 18:53:17 2023 +0200
+
+
+
+
+