4#ifndef _1f315bc4_b23e_4276_929a_4e7c5eb861b0
5#define _1f315bc4_b23e_4276_929a_4e7c5eb861b0
7#include <MrMeasSrv/MeasUtils/NLSStatus.h>
8#include <MrMeasSrv/SeqIF/libRT/sSLICE_POS.h>
10#include <MrProtSrv/Domain/CoreNative/SeqLim.h>
11#include <MrProtSrv/Domain/MrProtData/MrProt/MrProt.h>
12#include <MrProtSrv/Domain/MrProtData/MrProt/SeqIF/SeqExpo.h>
13#include <MrProtSrv/Domain/MrProtData/MrProt/SeqIF/SeqExpoRFBlockInfo.h>
42 std::string
const & counter, T
const &
child,
50 std::string
const & counter,
Siblings const & siblings,
53 virtual ~Loop() =
default;
57 MrProt & protocol, SeqLim & limits, SeqExpo & exports)
override;
61 MrProt & protocol, SeqLim & limits, SeqExpo & exports)
override;
76 MrProtocolData::SeqExpoRFInfo
rfInfo()
const override;
85 std::string
const & counter, T
const &
child,
93 std::string
const & counter,
Siblings const & siblings,
96 Loop(Loop
const &) =
default;
97 Loop(Loop &&) =
default;
98 Loop & operator=(Loop
const &) =
default;
99 Loop & operator=(Loop &&) =
default;
std::shared_ptr< Dictionary > Pointer
Reference-counted pointer to Dictionary.
Definition Dictionary.h:34
Dictionary::ConstPointer registry() const
Return the registry.
Node encapsulating a loop structure, using a Counter from the registry.
Definition Loop.h:31
std::shared_ptr< Loop > Pointer
Reference-counted pointer to Loop.
Definition Loop.h:33
uint64_t duration() const override
Return the sum of the duration of the children times the maximum value of the counter.
MrProtocolData::SeqExpoRFInfo rfInfo() const override
Return the sum of the RF information of the children times the maximum value of the counter.
void reset() override
Reset the counter and reset its children to a default state.
static Pointer New(std::string const &counter, T const &child, Dictionary::Pointer registry={})
Create a loop with a single child.
Definition Loop.h:41
NLSStatus run(MrProt &protocol, SeqLim &limits, SeqExpo &exports) override
Reset the counter and run the children for each index of the counter.
static Pointer New(std::string const &counter, Dictionary::Pointer registry={})
Create a loop with no child.
NLSStatus prepare(MrProt &protocol, SeqLim &limits, SeqExpo &exports) override
Reset the counter and prepare the children.
static Pointer New(std::string const &counter, Siblings const &siblings, Dictionary::Pointer registry={})
Create a loop with multiple children.
std::vector< AbstractNode::Pointer > Siblings
Child container.
Definition Node.h:33
Node(Dictionary::Pointer registry={})
Create a node with no child.
AbstractNode::ConstPointer child(std::size_t index) const
Return a child at given position.
#define DECLARE_POINTERS(name)
Declare pointer type aliases.
Definition helpers.h:83
Graph-related objects and functions.
Definition AbstractNode.h:24
Top-level namespace of the msl library.
Definition acceleration.h:17