HomeReferenceDomain.h ⇀ REACTIVE_DOMAIN

REACTIVE_DOMAIN macro

Defines a reactive domain.

Syntax

// (1)
#define REACTIVE_DOMAIN(name, mode)

// (2)
#define REACTIVE_DOMAIN(name, mode, engine)

Semantics

Defines a reactive domain name and initializes its static data.

A domain is a type; for a given name D, its definition would be similar to this:

class D
{
public:
    // Deleted default constructor to prevent instantiation
    DomainBase() = delete;

    // Type aliases
    template <typename S>
    using SignalT = Signal<D,S>;

    template <typename S>
    using VarSignalT = VarSignal<D,S>;

    template <typename E = Token>
    using EventsT = Events<D,E>;

    template <typename E = Token>
    using EventSourceT = EventSource<D,E>;

    using ObserverT = Observer<D>;

    using ReactorT = Reactor<D>;
};

The mode parameter has to be of type EDomainMode, which is defined as follows:

enum EDomainMode
{
    sequential,
    sequential_concurrent,
    parallel,
	parallel_concurrent
};

The engine parameter selects an explicit propagation engine. It has to be of type template <EPropagationMode> class T If this parameter is omitted, a default engine is selected based on the given mode.

The following table lists the available engines and the modes they support:

Engine ToposortEngine PulsecountEngine SubtreeEngine
sequential Yes No No
sequential_concurrent Yes No No
parallel Yes Yes Yes
parallel_concurrent Yes Yes Yes