Skip to content

Commit 2a80216

Browse files
committed
refactor wip
1 parent 933016d commit 2a80216

5 files changed

Lines changed: 235 additions & 714 deletions

File tree

‎include/react/API.h‎

Lines changed: 18 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,6 @@
1717
///////////////////////////////////////////////////////////////////////////////////////////////////
1818
/// API constants
1919
///////////////////////////////////////////////////////////////////////////////////////////////////
20-
enum OwnershipPolicy
21-
{
22-
unique,
23-
shared
24-
};
25-
2620
enum class WeightHint
2721
{
2822
automatic,
@@ -43,57 +37,34 @@ REACT_DEFINE_BITMASK_OPERATORS(TransactionFlags)
4337
///////////////////////////////////////////////////////////////////////////////////////////////////
4438

4539
// Groups
46-
template <OwnershipPolicy = unique>
4740
class ReactiveGroup;
4841

4942
// Signals
5043
template <typename S>
51-
class SignalBase;
52-
53-
template <typename S>
54-
class VarSignalBase;
55-
56-
template <typename S>
57-
class SignalSlotBase;
58-
59-
template <typename S>
60-
class SignalLinkBase;
61-
62-
template <typename S, OwnershipPolicy = unique>
6344
class Signal;
6445

65-
template <typename S, OwnershipPolicy = unique>
46+
template <typename S>
6647
class VarSignal;
6748

68-
template <typename S, OwnershipPolicy = unique>
49+
template <typename S>
6950
class SignalSlot;
7051

71-
template <typename S, OwnershipPolicy = unique>
52+
template <typename S>
7253
class SignalLink;
7354

7455
// Events
7556
enum class Token;
7657

77-
template <typename E>
78-
class EventBase;
79-
80-
template <typename E>
81-
class EventSourceBase;
82-
83-
template <typename E>
84-
class EventSlotBase;
85-
86-
template <typename E = Token, OwnershipPolicy = unique>
58+
template <typename E = Token>
8759
class Event;
8860

89-
template <typename E = Token, OwnershipPolicy = unique>
61+
template <typename E = Token>
9062
class EventSource;
9163

92-
template <typename E, OwnershipPolicy = unique>
64+
template <typename E>
9365
class EventSlot;
9466

9567
// Observers
96-
template <OwnershipPolicy = unique>
9768
class Observer;
9869

9970
///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -102,29 +73,29 @@ class Observer;
10273
template <typename T>
10374
struct IsSignal { static const bool value = false; };
10475

105-
template <typename T, OwnershipPolicy ownership_policy>
106-
struct IsSignal<Signal<T, ownership_policy>> { static const bool value = true; };
76+
template <typename T>
77+
struct IsSignal<Signal<T>> { static const bool value = true; };
10778

108-
template <typename T, OwnershipPolicy ownership_policy>
109-
struct IsSignal<VarSignal<T, ownership_policy>> { static const bool value = true; };
79+
template <typename T>
80+
struct IsSignal<VarSignal<T>> { static const bool value = true; };
11081

11182
template <typename T>
11283
struct IsEvent { static const bool value = false; };
11384

114-
template <typename T, OwnershipPolicy ownership_policy>
115-
struct IsEvent<Event<T, ownership_policy>> { static const bool value = true; };
85+
template <typename T>
86+
struct IsEvent<Event<T>> { static const bool value = true; };
11687

117-
template <typename T, OwnershipPolicy ownership_policy>
118-
struct IsEvent<EventSource<T, ownership_policy>> { static const bool value = true; };
88+
template <typename T>
89+
struct IsEvent<EventSource<T>> { static const bool value = true; };
11990

12091
template <typename T>
12192
struct AsNonInputNode { using type = T; };
12293

123-
template <typename T, OwnershipPolicy ownership_policy>
124-
struct AsNonInputNode<VarSignal<T, ownership_policy>> { using type = Signal<T, ownership_policy>; };
94+
template <typename T>
95+
struct AsNonInputNode<VarSignal<T>> { using type = Signal<T>; };
12596

126-
template <typename T, OwnershipPolicy ownership_policy>
127-
struct AsNonInputNode<EventSource<T, ownership_policy>> { using type = Event<T, ownership_policy>; };
97+
template <typename T>
98+
struct AsNonInputNode<EventSource<T>> { using type = Event<T>; };
12899

129100
/******************************************/ REACT_END /******************************************/
130101

‎include/react/Algorithm.h‎

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
/// Hold - Hold the most recent event in a signal
2828
///////////////////////////////////////////////////////////////////////////////////////////////////
2929
template <typename T, typename E>
30-
auto Hold(const ReactiveGroupBase& group, T&& initialValue, const EventBase<E>& evnt) -> Signal<E, unique>
30+
auto Hold(const ReactiveGroup& group, T&& initialValue, const Event<E>& evnt) -> Signal<E>
3131
{
3232
using REACT_IMPL::HoldNode;
3333
using REACT_IMPL::PrivateEventLinkNodeInterface;
@@ -41,7 +41,7 @@ auto Hold(const ReactiveGroupBase& group, T&& initialValue, const EventBase<E>&
4141
}
4242

4343
template <typename T, typename E>
44-
auto Hold(T&& initialValue, const EventBase<E>& evnt) -> Signal<E, unique>
44+
auto Hold(T&& initialValue, const Event<E>& evnt) -> Signal<E>
4545
{
4646
using REACT_IMPL::HoldNode;
4747
using REACT_IMPL::PrivateEventLinkNodeInterface;
@@ -58,7 +58,7 @@ auto Hold(T&& initialValue, const EventBase<E>& evnt) -> Signal<E, unique>
5858
/// Monitor - Emits value changes of target signal
5959
///////////////////////////////////////////////////////////////////////////////////////////////////
6060
template <typename S>
61-
auto Monitor(const ReactiveGroupBase& group, const SignalBase<S>& signal) -> Event<S, unique>
61+
auto Monitor(const ReactiveGroup& group, const Signal<S>& signal) -> Event<S>
6262
{
6363
using REACT_IMPL::MonitorNode;
6464
using REACT_IMPL::PrivateSignalLinkNodeInterface;
@@ -72,7 +72,7 @@ auto Monitor(const ReactiveGroupBase& group, const SignalBase<S>& signal) -> Eve
7272
}
7373

7474
template <typename S>
75-
auto Monitor(const SignalBase<S>& signal) -> Event<S, unique>
75+
auto Monitor(const Signal<S>& signal) -> Event<S>
7676
{
7777
using REACT_IMPL::MonitorNode;
7878
using REACT_IMPL::PrivateSignalLinkNodeInterface;
@@ -89,7 +89,7 @@ auto Monitor(const SignalBase<S>& signal) -> Event<S, unique>
8989
/// Iterate - Iteratively combines signal value with values from event stream (aka Fold)
9090
///////////////////////////////////////////////////////////////////////////////////////////////////
9191
template <typename S, typename T, typename F, typename E>
92-
auto Iterate(const ReactiveGroupBase& group, T&& initialValue, F&& func, const EventBase<E>& evnt) -> Signal<S, unique>
92+
auto Iterate(const ReactiveGroup& group, T&& initialValue, F&& func, const Event<E>& evnt) -> Signal<S>
9393
{
9494
using REACT_IMPL::IterateNode;
9595
using REACT_IMPL::IterateByRefNode;
@@ -111,7 +111,7 @@ auto Iterate(const ReactiveGroupBase& group, T&& initialValue, F&& func, const E
111111
}
112112

113113
template <typename S, typename T, typename F, typename E>
114-
auto Iterate(T&& initialValue, F&& func, const EventBase<E>& evnt) -> Signal<S, unique>
114+
auto Iterate(T&& initialValue, F&& func, const Event<E>& evnt) -> Signal<S>
115115
{
116116
using REACT_IMPL::IterateNode;
117117
using REACT_IMPL::IterateByRefNode;
@@ -136,7 +136,7 @@ auto Iterate(T&& initialValue, F&& func, const EventBase<E>& evnt) -> Signal<S,
136136
/// Iterate - Synced
137137
///////////////////////////////////////////////////////////////////////////////////////////////////
138138
template <typename S, typename T, typename F, typename E, typename ... Us>
139-
auto Iterate(const ReactiveGroupBase& group, T&& initialValue, F&& func, const EventBase<E>& evnt, const SignalBase<Us>& ... signals) -> Signal<S, unique>
139+
auto Iterate(const ReactiveGroup& group, T&& initialValue, F&& func, const Event<E>& evnt, const Signal<Us>& ... signals) -> Signal<S>
140140
{
141141
using REACT_IMPL::SyncedIterateNode;
142142
using REACT_IMPL::SyncedIterateByRefNode;
@@ -160,7 +160,7 @@ auto Iterate(const ReactiveGroupBase& group, T&& initialValue, F&& func, const E
160160
}
161161

162162
template <typename S, typename T, typename F, typename E, typename ... Us>
163-
auto Iterate(T&& initialValue, F&& func, const EventBase<E>& evnt, const SignalBase<Us>& ... signals) -> Signal<S, unique>
163+
auto Iterate(T&& initialValue, F&& func, const Event<E>& evnt, const Signal<Us>& ... signals) -> Signal<S>
164164
{
165165
using REACT_IMPL::SyncedIterateNode;
166166
using REACT_IMPL::SyncedIterateByRefNode;
@@ -187,7 +187,7 @@ auto Iterate(T&& initialValue, F&& func, const EventBase<E>& evnt, const SignalB
187187
/// Snapshot - Sets signal value to value of other signal when event is received
188188
///////////////////////////////////////////////////////////////////////////////////////////////////
189189
template <typename S, typename E>
190-
auto Snapshot(const ReactiveGroupBase& group, const SignalBase<S>& signal, const EventBase<E>& evnt) -> Signal<S, unique>
190+
auto Snapshot(const ReactiveGroup& group, const Signal<S>& signal, const Event<E>& evnt) -> Signal<S>
191191
{
192192
using REACT_IMPL::SnapshotNode;
193193
using REACT_IMPL::PrivateSignalLinkNodeInterface;
@@ -202,7 +202,7 @@ auto Snapshot(const ReactiveGroupBase& group, const SignalBase<S>& signal, const
202202
}
203203

204204
template <typename S, typename E>
205-
auto Snapshot(const SignalBase<S>& signal, const EventBase<E>& evnt) -> Signal<S, unique>
205+
auto Snapshot(const Signal<S>& signal, const Event<E>& evnt) -> Signal<S>
206206
{
207207
using REACT_IMPL::SnapshotNode;
208208
using REACT_IMPL::PrivateSignalLinkNodeInterface;
@@ -220,7 +220,7 @@ auto Snapshot(const SignalBase<S>& signal, const EventBase<E>& evnt) -> Signal<S
220220
/// Pulse - Emits value of target signal when event is received
221221
///////////////////////////////////////////////////////////////////////////////////////////////////
222222
template <typename S, typename E>
223-
auto Pulse(const ReactiveGroupBase& group, const SignalBase<S>& signal, const EventBase<E>& evnt) -> Event<S, unique>
223+
auto Pulse(const ReactiveGroup& group, const Signal<S>& signal, const Event<E>& evnt) -> Event<S>
224224
{
225225
using REACT_IMPL::PulseNode;
226226
using REACT_IMPL::PrivateSignalLinkNodeInterface;
@@ -235,7 +235,7 @@ auto Pulse(const ReactiveGroupBase& group, const SignalBase<S>& signal, const Ev
235235
}
236236

237237
template <typename S, typename E>
238-
auto Pulse(const SignalBase<S>& signal, const EventBase<E>& evnt) -> Event<S, unique>
238+
auto Pulse(const Signal<S>& signal, const Event<E>& evnt) -> Event<S>
239239
{
240240
using REACT_IMPL::PulseNode;
241241
using REACT_IMPL::PrivateSignalLinkNodeInterface;

0 commit comments

Comments
 (0)