4#ifndef _b88cfdce_0b38_4b24_b5c6_5b69be24d9d8
5#define _b88cfdce_0b38_4b24_b5c6_5b69be24d9d8
9#include <MrMeasSrv/MeasUtils/NLSStatus.h>
10#include <MrMeasSrv/SeqIF/libRT/sSLICE_POS.h>
12#include <MrProtSrv/Domain/CoreNative/SeqLim.h>
13#include <MrProtSrv/Domain/MrProtData/MrProt/MrProt.h>
14#include <MrProtSrv/Domain/MrProtData/MrProt/SeqIF/SeqExpo.h>
15#include <MrProtSrv/Domain/MrProtData/MrProt/SeqIF/SeqExpoRFBlockInfo.h>
33 using Siblings = std::vector<AbstractNode::Pointer>;
53 MrProt & protocol, SeqLim & limits, SeqExpo & exports)
override;
57 MrProt & protocol, SeqLim & limits, SeqExpo & exports)
override;
66 MrProtocolData::SeqExpoRFInfo
rfInfo()
const override;
77 this->_children.push_back(
child);
78 this->_children.back()->setRegistry(this->_registry);
114 Node(Node
const &) =
default;
115 Node(Node &&) =
default;
116 Node & operator=(Node
const &) =
default;
117 Node & operator=(Node &&) =
default;
#define DECLARE_POINTERS(name)
Declare pointer type aliases.
Definition Dictionary.h:18
std::shared_ptr< Dictionary > Pointer
Reference-counted pointer to Dictionary
Definition Dictionary.h:39
Base class for all graph nodes.
Definition AbstractNode.h:28
std::shared_ptr< AbstractNode > Pointer
Reference-counted pointer to AbstractNode
Definition AbstractNode.h:30
Dictionary::ConstPointer registry() const
Return the registry.
std::shared_ptr< AbstractNode const > ConstPointer
Reference-counted constant pointer to AbstractNode
Definition AbstractNode.h:30
Container node, prepare and run its children sequentially.
Definition Node.h:28
std::shared_ptr< Node > Pointer
Reference-counted pointer to Node
Definition Node.h:30
bool empty() const
Check whether this node has children.
std::size_t size() const
Return the number of children.
std::vector< AbstractNode::Pointer > Siblings
Child container.
Definition Node.h:33
Node & setRegistry(Dictionary::Pointer registry) override
Set the registry to this node and its children.
NLSStatus prepare(MrProt &protocol, SeqLim &limits, SeqExpo &exports) override
Prepare all children in order.
static Pointer New(T const &child, Dictionary::Pointer registry={})
Create a node with a single child.
Definition Node.h:40
MrProtocolData::SeqExpoRFInfo rfInfo() const override
Return the sum of the RF information of the children.
Node & deleteChild(std::size_t index)
Remove a child.
Node & clearChildren()
Remove all children.
static Pointer New(Dictionary::Pointer registry={})
Create a node with no child.
static Pointer New(Siblings const &siblings, Dictionary::Pointer registry={})
Create a node with multiple children.
AbstractNode::ConstPointer child(std::size_t index) const
Return a child at given position.
AbstractNode::Pointer child(std::size_t index)
Return a child at given position.
T & appendChild(std::shared_ptr< T > const &child)
Append a child in last position, return the child.
Definition Node.h:75
uint64_t duration() const override
Return the sum of the duration of the children.
NLSStatus run(MrProt &protocol, SeqLim &limits, SeqExpo &exports) override
Run all children in order.
Top-level namespace of the msl library.
Definition acceleration.h:17