MCPcopy Create free account
hub / github.com/InteractiveComputerGraphics/TriangleMeshDistance / GeneratorTracker

Class GeneratorTracker

tests/catch.hpp:10017–10067  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

10015
10016 namespace Generators {
10017 struct GeneratorTracker : TestCaseTracking::TrackerBase, IGeneratorTracker {
10018 GeneratorBasePtr m_generator;
10019
10020 GeneratorTracker( TestCaseTracking::NameAndLocation const& nameAndLocation, TrackerContext& ctx, ITracker* parent )
10021 : TrackerBase( nameAndLocation, ctx, parent )
10022 {}
10023 ~GeneratorTracker();
10024
10025 static GeneratorTracker& acquire( TrackerContext& ctx, TestCaseTracking::NameAndLocation const& nameAndLocation ) {
10026 std::shared_ptr<GeneratorTracker> tracker;
10027
10028 ITracker& currentTracker = ctx.currentTracker();
10029 if( TestCaseTracking::ITrackerPtr childTracker = currentTracker.findChild( nameAndLocation ) ) {
10030 assert( childTracker );
10031 assert( childTracker->isGeneratorTracker() );
10032 tracker = std::static_pointer_cast<GeneratorTracker>( childTracker );
10033 }
10034 else {
10035 tracker = std::make_shared<GeneratorTracker>( nameAndLocation, ctx, &currentTracker );
10036 currentTracker.addChild( tracker );
10037 }
10038
10039 if( !ctx.completedCycle() && !tracker->isComplete() ) {
10040 tracker->open();
10041 }
10042
10043 return *tracker;
10044 }
10045
10046 // TrackerBase interface
10047 bool isGeneratorTracker() const override { return true; }
10048 auto hasGenerator() const -> bool override {
10049 return !!m_generator;
10050 }
10051 void close() override {
10052 TrackerBase::close();
10053 // Generator interface only finds out if it has another item on atual move
10054 if (m_runState == CompletedSuccessfully && m_generator->next()) {
10055 m_children.clear();
10056 m_runState = Executing;
10057 }
10058 }
10059
10060 // IGeneratorTracker interface
10061 auto getGenerator() const -> GeneratorBasePtr const& override {
10062 return m_generator;
10063 }
10064 void setGenerator( GeneratorBasePtr&& generator ) override {
10065 m_generator = std::move( generator );
10066 }
10067 };
10068 GeneratorTracker::~GeneratorTracker() {}
10069 }
10070

Callers

nothing calls this directly

Calls 6

findChildMethod · 0.80
addChildMethod · 0.80
completedCycleMethod · 0.80
isCompleteMethod · 0.80
isGeneratorTrackerMethod · 0.45
openMethod · 0.45

Tested by

no test coverage detected