Contains the base class for reactive domains and the macro to define them.
#include "react/Domain.h"
namespace react
{
// Domain concurrency policies
enum EDomainMode
{
sequential,
sequential_concurrent,
parallel,
parallel_concurrent
}
// Optional transaction flags
enum ETransactionFlags
{
allow_merging
}
}
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>
}
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>
}
// 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)