Core

Nodes and Gadgets

class Node

Node is the base class for everything in a Gadgetron chain, including Gadgets and TypedChannelGadgets

Subclassed by Gadgetron::Core::GenericChannelGadget, Gadgetron::LegacyGadgetNode

Public Functions

virtual void process(GenericInputChannel &in, OutputChannel &out) = 0

The function which processes the data coming from the InputChannel. Conceptually a coroutine.

Parameters:
  • in – Channel from which messages are received from upstream

  • out – Channel in which messages are sent on downstream

class GenericChannelGadget : public Gadgetron::Core::Node, public Gadgetron::Core::PropertyMixin

Subclassed by Gadgetron::Core::ChannelGadget< TYPELIST >, Gadgetron::Core::GenericPureGadget

template<class ...TYPELIST>
class ChannelGadget : public Gadgetron::Core::GenericChannelGadget

A Node providing typed access to input data. Messages not matching the TYPELIST are simply passed to the next Node in the chain. Should be the first choice for writing new Gadgets.

Template Parameters:

TYPELIST – The type(s) of the messages to be received

Public Functions

inline virtual void process(GenericInputChannel &in, OutputChannel &out) final

The function which processes the data coming from the InputChannel. Conceptually a coroutine.

Parameters:
  • in – Channel from which messages are received from upstream

  • out – Channel in which messages are sent on downstream

virtual void process(InputChannel<TYPELIST...> &in, OutputChannel &out) = 0

The process function to be implemented when inheriting from this class.

Parameters:
  • in – A channel of the types specified in TYPELIST

  • out – Channel of output

class GenericPureGadget : public Gadgetron::Core::GenericChannelGadget

Subclassed by Gadgetron::Core::PureGadget< RETURN, INPUT >

Public Functions

inline virtual void process(GenericInputChannel &in, OutputChannel &out) final

The function which processes the data coming from the InputChannel. Conceptually a coroutine.

Parameters:
  • in – Channel from which messages are received from upstream

  • out – Channel in which messages are sent on downstream

template<class RETURN, class INPUT>
class PureGadget : public Gadgetron::Core::GenericPureGadget

Channels

class MessageChannel : public Gadgetron::Core::Channel
class OutputChannel

The end of a channel which provides output. Only constructible through make_channel(args)

Public Functions

OutputChannel(OutputChannel &&other) noexcept = default
OutputChannel &operator=(OutputChannel &&other) noexcept = default
template<class ...ARGS>
void push(ARGS&&... ptrs)

Pushes a message of type ARGS to the channel.

void push_message(Message)

Pushes a message to the channel.

ChannelIterator<OutputChannel> begin()
class GenericInputChannel : public ChannelRange<GenericInputChannel>

The end of a channel which provides input

Public Functions

GenericInputChannel(GenericInputChannel &&other) noexcept = default
GenericInputChannel &operator=(GenericInputChannel &&other) noexcept = default
Message pop()

Blocks until it can take a message from the channel.

optional<Message> try_pop()

Nonblocking method returning a message if one is available, or None otherwise.

template<class ...TYPELIST>
class InputChannel : public ChannelRange<InputChannel<TYPELIST...>>

Core Types

using Gadgetron::Core::Acquisition = tuple<ISMRMRD::AcquisitionHeader, hoNDArray<std::complex<float>>, optional<hoNDArray<float>>>

An Acquisition consists of a data header, the kspace data itself and optionally an array of kspace trajectories.

template<class T>
using Gadgetron::Core::Image = tuple<ISMRMRD::ImageHeader, hoNDArray<T>, optional<ISMRMRD::MetaContainer>>

An image consists of a header, an array of image data and optionally some metadata.

using Gadgetron::Core::Waveform = tuple<ISMRMRD::WaveformHeader, hoNDArray<uint32_t>>

A Waveform consiste of a header, followed by the raw Waveform data. See the MRD documentation page for more details.

template<class T>
using Gadgetron::Core::optional = std::optional<T>
template<class ...TYPES>
using Gadgetron::Core::variant = std::variant<TYPES...>

Warning

doxygenfunction: Cannot find function “Gadgetron::Core::visit” in doxygen xml output for project “Gadgetron” from directory: doc/xml