HomeReference ⇀ Domain.h

Domain.h

Contains the base class for reactive domains and the macro to define them.

#include "react/Domain.h"

Synopsis

Constants

namespace react
{
    // Domain concurrency policies
    enum EDomainMode
    {
        sequential,
        sequential_concurrent,
        parallel,
        parallel_concurrent
    }

    // Optional transaction flags
    enum ETransactionFlags
    {
        allow_merging
    }
}

Classes

namespace react
{
    // WeightHint
    enum class WeightHint

    // Proxy to continuation node
    class Continuation<D,D2>

    // Status handle to wait on asynchrounous transactions
    class TransactionStatus

    // Supplementary type for engine declarations
    enum EPropagationMode

    // Toposort engine class template
    class ToposortEngine<EPropagationMode m>

    // Pulsecount engine class template
    class PulsecountEngine<EPropagationMode m>

    // Subtree engine class template
    class SubtreeEngine<EPropagationMode m>
}

Functions

namespace react
{
    // Bitmask of ETransactionFlags
    using TransactionFlagsT = underlying_type<ETransactionFlags>::type;

    // Executes given function as transaction (blocking)
    DoTransaction<D>(F&& func) -> void
    DoTransaction<D>(TransactionFlagsT flags, F&& func) -> void

    // Enqueues given function as as asynchronous transaction (non-blocking)
    AsyncTransaction<D>(F&& func) -> void
    AsyncTransaction<D>(TransactionStatus& status, F&& func) -> void
    AsyncTransaction<D>(TransactionFlagsT flags, F&& func) -> void
    AsyncTransaction<D>(TransactionFlagsT flags, TransactionStatus& status, F&& func) -> void

    // Creates a continuation from domain D to D2
    MakeContinuation<D,D2>(const Signal<D,S>& trigger, F&& func)
      -> Continuation<D,D2>
    MakeContinuation<D,D2>(const Events<D,E>& trigger, F&& func)
      -> Continuation<D,D2>
    MakeContinuation<D,D2>(const Events<D,E>& trigger, const SignalPack<D,TDepValues...>& depPack, F&& func)
      -> Continuation<D,D2>
    MakeContinuation<D,D2>(TransactionFlagsT flags, const Signal<D,S>& trigger, F&& func)
      -> Continuation<D,D2>
    MakeContinuation<D,D2>(TransactionFlagsT flags, const Events<D,E>& trigger, F&& func)
      -> Continuation<D,D2>
    MakeContinuation<D,D2>(TransactionFlagsT flags, const Events<D,E>& trigger, const SignalPack<D,TDepValues...>& depPack, F&& func)
      -> Continuation<D,D2>
}

Macros

// Defines a reactive domain
REACTIVE_DOMAIN(name, EDomainMode mode)
REACTIVE_DOMAIN(name, EDomainMode mode, engine)

// Defines type aliases for the given reactive domain
USING_REACTIVE_DOMAIN(name)