msl 1.1.0
 
Loading...
Searching...
No Matches
Action.h
Go to the documentation of this file.
1// Copyright 2025 Julien Lamy, ICube, Université de Strasbourg-CNRS.
2// Part of msl, distributed under the terms of the MIT license.
3
4#ifndef _70ee755b_d0eb_4fb8_ab2c_1613aca124b2
5#define _70ee755b_d0eb_4fb8_ab2c_1613aca124b2
6
7#include <cstddef>
8#include <functional>
9
10#include <boost/variant/variant.hpp>
11
12#include <MrMeasSrv/MeasUtils/NLSStatus.h>
13
14#include <MrProtSrv/Domain/CoreNative/SeqLim.h>
15#include <MrProtSrv/Domain/MrProtData/MrProt/MrProt.h>
16#include <MrProtSrv/Domain/MrProtData/MrProt/SeqIF/SeqExpo.h>
17#include <MrProtSrv/Domain/MrProtData/MrProt/SeqIF/SeqExpoRFBlockInfo.h>
18
19#include "msl/Dictionary.h"
21
22namespace msl
23{
24
25namespace graph
26{
27
29class Action: public AbstractNode
30{
31public:
32 using Function = boost::variant<
33 std::function<void()>,
34 std::function<void(Dictionary::Pointer)>,
35 std::function<void(MrProt &)>,
36 std::function<void(MrProt &, Dictionary::Pointer)>,
37 std::function<void(MrProt &, SeqLim &, SeqExpo &)>,
38 std::function<void(MrProt &, SeqLim &, SeqExpo &, Dictionary::Pointer)>>;
39
41
42 static Pointer New(
43 Function const & function, Dictionary::Pointer registry={});
44
45 virtual ~Action() = default;
46
47 NLSStatus prepare(
48 MrProt & protocol, SeqLim & limits, SeqExpo & exports) override;
49
50 NLSStatus run(
51 MrProt & protocol, SeqLim & limits, SeqExpo & exports) override;
52
54 uint64_t duration() const override;
55
57 MrProtocolData::SeqExpoRFInfo rfInfo() const override;
58private:
59 Function _function;
60
61 Action(Function const & function, Dictionary::Pointer registry={});
62 Action(Action const &) = default;
63 Action(Action &&) = default;
64 Action & operator=(Action const &) = default;
65 Action & operator=(Action &&) = default;
66};
67
68}
69}
70
71#endif // _70ee755b_d0eb_4fb8_ab2c_1613aca124b2
Dictionary::ConstPointer registry() const
Return the registry.
AbstractNode(Dictionary::Pointer registry={})
Node calling a function when run is called.
Definition Action.h:30
static Pointer New(Function const &function, Dictionary::Pointer registry={})
uint64_t duration() const override
Alway return 0.
DECLARE_POINTERS(Action)
boost::variant< std::function< void()>, std::function< void(Dictionary::Pointer)>, std::function< void(MrProt &)>, std::function< void(MrProt &, Dictionary::Pointer)>, std::function< void(MrProt &, SeqLim &, SeqExpo &)>, std::function< void(MrProt &, SeqLim &, SeqExpo &, Dictionary::Pointer)> > Function
Definition Action.h:32
NLSStatus prepare(MrProt &protocol, SeqLim &limits, SeqExpo &exports) override
Prepare the node.
NLSStatus run(MrProt &protocol, SeqLim &limits, SeqExpo &exports) override
Run the node.
virtual ~Action()=default
MrProtocolData::SeqExpoRFInfo rfInfo() const override
Alway return 0.
Definition AbstractNode.h:23
Definition acceleration.h:17