4#ifndef _27135a4d_ad34_43b2_b032_c9745dc65fca
5#define _27135a4d_ad34_43b2_b032_c9745dc65fca
10#include <MrImagingFW/libSeqUtilFW/libSeqUtilFW.h>
12#include <MrMeasSrv/MeasUtils/NLSStatus.h>
13#include <MrMeasSrv/SeqIF/libRT/sSLICE_POS.h>
14#include <MrMeasSrv/SeqIF/Sequence/sequmsg.h>
16#include <MrProtSrv/Domain/CoreNative/SeqLim.h>
17#include <MrProtSrv/Domain/MrProtData/MrProt/MrProt.h>
18#include <MrProtSrv/Domain/MrProtData/MrProt/SeqIF/SeqExpo.h>
19#include <MrProtSrv/Domain/MrProtData/MrProt/SeqIF/SeqExpoRFBlockInfo.h>
46template<
typename T,
typename Slices=std::vector<sSLICE_POS>>
50 using Pointer = std::shared_ptr<Block<T, Slices>>;
55 template<
typename ... Args>
56 static Pointer New(std::string
const & slice, Args && ... args)
58 return Pointer(
new Block<T>(slice, args ...));
65 MrProt & protocol, SeqLim & limits, SeqExpo & exports)
override
68 return MRI_SEQ_SEQU_NORMAL;
73 MrProt & protocol, SeqLim & limits, SeqExpo & exports)
override
77 this->block,
run(protocol, limits, exports, &slice));
78 return MRI_SEQ_SEQU_NORMAL;
85 return const_cast<T&
>(this->block).getDurationPerRequest();
89 MrProtocolData::SeqExpoRFInfo
rfInfo()
const override
92 return const_cast<T&
>(this->block).getRFInfoPerRequest();
98 template<
typename ... Args>
99 Block(std::string
const & slice, Args && ... args)
104 Block(Block<T, Slices>
const &) =
default;
105 Block(Block<T, Slices> &&) =
default;
106 Block & operator=(Block<T, Slices>
const &) =
default;
107 Block & operator=(Block<T, Slices> &&) =
default;
Base class for all graph nodes.
Definition AbstractNode.h:27
T const & get(std::string const &key) const
Return an object from the dictionary.
Definition AbstractNode.h:64
AbstractNode(Dictionary::Pointer registry={})
Node encapsulating a block (anything respecting the API of SeqBuildBlock).
Definition Block.h:48
T block
Definition Block.h:53
NLSStatus prepare(MrProt &protocol, SeqLim &limits, SeqExpo &exports) override
Prepare the block.
Definition Block.h:64
uint64_t duration() const override
Return the duration of the block.
Definition Block.h:82
MrProtocolData::SeqExpoRFInfo rfInfo() const override
Return the RF information of the block.
Definition Block.h:89
NLSStatus run(MrProt &protocol, SeqLim &limits, SeqExpo &exports) override
Run the block with the slice referenced by the counter.
Definition Block.h:72
std::shared_ptr< Block< T, Slices > > Pointer
Definition Block.h:50
std::shared_ptr< Block< T const, Slices > > ConstPointer
Definition Block.h:51
static Pointer New(std::string const &slice, Args &&... args)
Definition Block.h:56
#define ON_FALSE_RETURN_STATUS(O, S)
Execute statement O.S, and, if false, return the status of object O.
Definition helpers.h:52
Definition AbstractNode.h:23
Definition acceleration.h:17