diff --git a/src/steam/engine/dispatcher.hpp b/src/steam/engine/dispatcher.hpp
index 7c1178d2f..05c40cce0 100644
--- a/src/steam/engine/dispatcher.hpp
+++ b/src/steam/engine/dispatcher.hpp
@@ -270,7 +270,7 @@ namespace engine {
/** Package a Ticket together with a direct dependency,
* to allow setup of schedule times in downstream processing */
- using TicketDepend = std::pair;
+ using TicketDepend = std::pair;
/**
@@ -305,9 +305,9 @@ namespace engine {
return buildPipeline (
this->expandAll([](TicketDepend& currentLevel)
{
- JobTicket const* parent = currentLevel.second;
+ JobTicket* parent = currentLevel.second;
return lib::transformIterator (parent->getPrerequisites()
- ,[&parent](JobTicket const& prereqTicket)
+ ,[&parent](JobTicket& prereqTicket)
{ // parent shifted up to first pos
return TicketDepend{parent, &prereqTicket};
}
diff --git a/src/steam/engine/job-ticket.cpp b/src/steam/engine/job-ticket.cpp
index 870f892d2..5a1fa681c 100644
--- a/src/steam/engine/job-ticket.cpp
+++ b/src/steam/engine/job-ticket.cpp
@@ -52,7 +52,7 @@ namespace engine {
/** special »do nothing« JobTicket marker */
- const JobTicket JobTicket::NOP{}; //////////////////////////////////////////////////////////////TICKET #725 : do we actually need that for the final data structure?
+ JobTicket JobTicket::NOP{}; ////////////////////////////////////////////////////////////////////TICKET #725 : do we actually need that for the final data structure?
JobTicket::JobTicket()
: provision_{nopFunctor(), ExitNode::NIL}
diff --git a/src/steam/engine/job-ticket.hpp b/src/steam/engine/job-ticket.hpp
index 2ff9eaf02..45b3b4c91 100644
--- a/src/steam/engine/job-ticket.hpp
+++ b/src/steam/engine/job-ticket.hpp
@@ -90,6 +90,7 @@ using lib::LUID;
* the JobTicket acts as _higher order function:_ a function generating
* on invocation another, specific function (= the job).
*
+ * @note JobTicket is effectively immutable after construction
* @todo 4/23 WIP-WIP-WIP defining the invocation sequence and render jobs
*/
class JobTicket
@@ -98,7 +99,7 @@ using lib::LUID;
struct Prerequisite
{
Prerequisite* next{nullptr}; // for intrusive list
- JobTicket const& prereqTicket;
+ JobTicket& prereqTicket;
template
Prerequisite (ExitNode const& node, ALO& allocateTicket)
@@ -138,7 +139,7 @@ using lib::LUID;
: provision_{buildProvisionSpec (exitNode, allocator)}
{ }
- static const JobTicket NOP;
+ static JobTicket NOP;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1276 : likely to become obsolete
@@ -151,11 +152,11 @@ using lib::LUID;
Job createJobFor (FrameCoord coordinates) const;
auto
- getPrerequisites () const
+ getPrerequisites ()
{
- return lib::transformIterator (this->empty()? Prerequisites::const_iterator()
+ return lib::transformIterator (this->empty()? Prerequisites::iterator()
: provision_.prerequisites.begin()
- ,[](Prerequisite const& prq) -> JobTicket const&
+ ,[](Prerequisite& prq) -> JobTicket&
{
return prq.prereqTicket;
});
diff --git a/src/steam/fixture/segment.hpp b/src/steam/fixture/segment.hpp
index aafd75ec7..ee10bfc76 100644
--- a/src/steam/fixture/segment.hpp
+++ b/src/steam/fixture/segment.hpp
@@ -70,7 +70,7 @@ namespace fixture {
{
using JobTicket = engine::JobTicket;
using TicketAlloc = lib::AllocatorHandle;
- using PortTable = std::deque>;
+ using PortTable = std::deque>;
protected:
@@ -128,7 +128,7 @@ namespace fixture {
* Access the JobTicket for this segment and the given \a portNr
* @remark will be created on-demand and remain stable thereafter.
*/
- engine::JobTicket const&
+ engine::JobTicket&
jobTicket (size_t portNr) const
{
if (portNr >= portTable_.size())
diff --git a/src/steam/fixture/segmentation.hpp b/src/steam/fixture/segmentation.hpp
index e09f9406d..d7ee42c52 100644
--- a/src/steam/fixture/segmentation.hpp
+++ b/src/steam/fixture/segmentation.hpp
@@ -83,8 +83,7 @@ namespace fixture {
class Segmentation
: util::NonCopyable
{
- ///////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1243 : preliminary implementation
-
+ protected:
/** segments of the engine in ordered sequence. */
list segments_;
diff --git a/src/steam/mobject/model-port.hpp b/src/steam/mobject/model-port.hpp
index 3bbfc2711..cd05d49b3 100644
--- a/src/steam/mobject/model-port.hpp
+++ b/src/steam/mobject/model-port.hpp
@@ -146,6 +146,12 @@ namespace mobject {
return mp1.id_ != mp2.id_;
}
+ friend bool
+ operator< (ModelPort const& mp1, ModelPort const& mp2)
+ {
+ return lib::HashVal(mp1.id_) < lib::HashVal(mp2.id_);
+ }
+
private:
};
diff --git a/tests/core/steam/engine/job-planning-setup-test.cpp b/tests/core/steam/engine/job-planning-setup-test.cpp
index e14402250..29668e72f 100644
--- a/tests/core/steam/engine/job-planning-setup-test.cpp
+++ b/tests/core/steam/engine/job-planning-setup-test.cpp
@@ -130,8 +130,8 @@ namespace test {
)
.genNode()};
fixture::Segment const& seg = mockSegs[Time{0,15}]; // access anywhere 10s <= t < 20s
- JobTicket const& ticket = seg.jobTicket(0); // get the master-JobTicket from this segment
- JobTicket const& prereq = *(ticket.getPrerequisites()); // pull a prerequisite JobTicket
+ JobTicket& ticket = seg.jobTicket(0); // get the master-JobTicket from this segment
+ JobTicket& prereq = *(ticket.getPrerequisites()); // pull a prerequisite JobTicket
FrameCoord coord; // Frame coordinates for invocation (placeholder)
Job jobP = prereq.createJobFor(coord); // create an instance of the prerequisites for this coordinates
@@ -203,6 +203,7 @@ namespace test {
JobTicket const& ticket = *pipeline->second;
FrameCoord dummy;
+ dummy.absoluteNominalTime = Time::ZERO; // actual time point is irrelevant here
Job job = ticket.createJobFor(dummy);
CHECK (dispatcher.verify(job, port, sink));
}
diff --git a/tests/core/steam/engine/mock-dispatcher.hpp b/tests/core/steam/engine/mock-dispatcher.hpp
index 5f58b1b6f..a0093d298 100644
--- a/tests/core/steam/engine/mock-dispatcher.hpp
+++ b/tests/core/steam/engine/mock-dispatcher.hpp
@@ -61,9 +61,10 @@
#include "lib/linked-elements.hpp"
#include "lib/itertools.hpp"
#include "lib/depend.hpp"
+#include "lib/util.hpp"
#include
-#include
+#include
-
-
-
-
+
+
+
+
-
+
@@ -72444,14 +72457,25 @@ Date: Thu Apr 20 18:53:17 2023 +0200
+
+
+
+
+
+
+ ...eine billige und manipulative Implementierung in MockSegmentation
+
+
+
+
-
-
+
+
-
+
@@ -73556,10 +73580,10 @@ Date: Thu Apr 20 18:53:17 2023 +0200
-
-
-
-
+
+
+
+
@@ -73578,8 +73602,8 @@ Date: Thu Apr 20 18:53:17 2023 +0200
-
-
+
+
@@ -74536,7 +74560,7 @@ Date: Thu Apr 20 18:53:17 2023 +0200
-
+
@@ -74547,6 +74571,7 @@ Date: Thu Apr 20 18:53:17 2023 +0200
+
@@ -74977,16 +75002,16 @@ Date: Thu Apr 20 18:53:17 2023 +0200
-
-
-
-
+
+
+
+
-
+
@@ -74997,7 +75022,7 @@ Date: Thu Apr 20 18:53:17 2023 +0200
-
+
@@ -75006,11 +75031,11 @@ Date: Thu Apr 20 18:53:17 2023 +0200
-
-
-
-
-
+
+
+
+
+
@@ -75032,6 +75057,9 @@ Date: Thu Apr 20 18:53:17 2023 +0200
+
+
+
@@ -75394,9 +75422,9 @@ Date: Thu Apr 20 18:53:17 2023 +0200
-
+
-
+
@@ -75477,8 +75505,9 @@ Date: Thu Apr 20 18:53:17 2023 +0200
-
+
+
@@ -75492,8 +75521,11 @@ Date: Thu Apr 20 18:53:17 2023 +0200
-
-
+
+
+
+
+
@@ -75569,6 +75601,10 @@ Date: Thu Apr 20 18:53:17 2023 +0200
+
+
+
+