Skip to content

Commit 1116f3a

Browse files
committed
progress
1 parent fc17e99 commit 1116f3a

2 files changed

Lines changed: 21 additions & 46 deletions

File tree

‎include/react/Event.h‎

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,6 @@ class Event
3737
using NodeType = REACT_IMPL::EventStreamNode<E>;
3838

3939
public:
40-
Event() = default;
41-
4240
Event(const Event&) = default;
4341
Event& operator=(const Event&) = default;
4442

@@ -52,7 +50,7 @@ class Event
5250

5351
template <typename F, typename T>
5452
Event(const Group& group, F&& func, const Event<T>& dep) :
55-
Event::Event( REACT_IMPL::CtorTag{ }, CreateProcessingNode(REACT_IMPL::PrivateGroupInterface::GraphPtr(group), std::forward<F>(func), dep) )
53+
Event::Event( REACT_IMPL::CtorTag{ }, CreateProcessingNode(group, std::forward<F>(func), dep) )
5654
{ }
5755

5856
template <typename F, typename T, typename ... Us>
@@ -62,7 +60,7 @@ class Event
6260

6361
template <typename F, typename T, typename ... Us>
6462
Event(const Group& group, F&& func, const Event<T>& dep, const Signal<Us>& ... signals) :
65-
Event::Event( REACT_IMPL::CtorTag{ }, CreateSyncedProcessingNode(REACT_IMPL::PrivateGroupInterface::GraphPtr(group), std::forward<F>(func), dep, signals ...) )
63+
Event::Event( REACT_IMPL::CtorTag{ }, CreateSyncedProcessingNode(group, std::forward<F>(func), dep, signals ...) )
6664
{ }
6765

6866
auto Tokenize() const -> decltype(auto)
@@ -127,8 +125,6 @@ template <typename E>
127125
class EventSource : public Event<E>
128126
{
129127
public:
130-
EventSource() = default;
131-
132128
EventSource(const EventSource&) = default;
133129
EventSource& operator=(const EventSource&) = default;
134130

@@ -137,7 +133,7 @@ class EventSource : public Event<E>
137133

138134
// Construct event source
139135
explicit EventSource(const Group& group) :
140-
EventSource::Event( REACT_IMPL::CtorTag{ }, CreateSourceNode(REACT_IMPL::PrivateGroupInterface::GraphPtr(group)) )
136+
EventSource::Event( REACT_IMPL::CtorTag{ }, CreateSourceNode(group) )
141137
{ }
142138

143139
void Emit(const E& value)
@@ -157,12 +153,10 @@ class EventSource : public Event<E>
157153
{ EmitValue(std::move(value)); return *this; }
158154

159155
protected:
160-
161-
162156
auto CreateSourceNode(const Group& group) -> decltype(auto)
163157
{
164158
using SrcNodeType = REACT_IMPL::EventSourceNode<E>;
165-
return std::make_shared<SrcNodeType>(graphPtr);
159+
return std::make_shared<SrcNodeType>(group);
166160
}
167161

168162
private:
@@ -188,8 +182,6 @@ template <typename E>
188182
class EventSlot : public Event<E>
189183
{
190184
public:
191-
EventSlot() = default;
192-
193185
EventSlot(const EventSlot&) = default;
194186
EventSlot& operator=(const EventSlot&) = default;
195187

@@ -210,8 +202,6 @@ class EventSlot : public Event<E>
210202
protected:
211203
auto CreateSlotNode(const Group& group, const Event<E>& input) -> decltype(auto)
212204
{
213-
using REACT_IMPL::PrivateNodeInterface;
214-
using REACT_IMPL::PrivateGroupInterface;
215205
using SlotNodeType = REACT_IMPL::EventSlotNode<E>;
216206

217207
return std::make_shared<SlotNodeType>(group, input);
@@ -220,7 +210,6 @@ class EventSlot : public Event<E>
220210
private:
221211
void SetInput(const Event<E>& newInput)
222212
{
223-
using REACT_IMPL::PrivateNodeInterface;
224213
using REACT_IMPL::NodeId;
225214
using REACT_IMPL::ReactiveGraph;
226215
using SlotNodeType = REACT_IMPL::EventSlotNode<E>;
@@ -240,8 +229,6 @@ template <typename E>
240229
class EventLink : public Event<E>
241230
{
242231
public:
243-
EventLink() = default;
244-
245232
EventLink(const EventLink&) = default;
246233
EventLink& operator=(const EventLink&) = default;
247234

‎include/react/Observer.h‎

Lines changed: 17 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,6 @@ class Observer
2929
using NodeType = REACT_IMPL::ObserverNode;
3030

3131
public:
32-
Observer() = default;
33-
3432
Observer(const Observer&) = default;
3533
Observer& operator=(const Observer&) = default;
3634

@@ -41,45 +39,39 @@ class Observer
4139
template <typename F, typename ... Ts>
4240
Observer(F&& func, const Signal<Ts>& ... subjects) :
4341
Observer::Observer(REACT_IMPL::CtorTag{ }, CreateSignalObserverNode(std::forward<F>(func), subjects ...))
44-
{ }
42+
{ }
4543

4644
// Construct signal observer with explicit group
4745
template <typename F, typename ... Ts>
4846
Observer(const Group& group, F&& func, const Signal<Ts>& ... subjects) :
49-
Observer::Observer(REACT_IMPL::CtorTag{ }, CreateSignalObserverNode(REACT_IMPL::PrivateGroupInterface::GraphPtr(group), std::forward<F>(func), subjects ...))
50-
{ }
47+
Observer::Observer(REACT_IMPL::CtorTag{ }, CreateSignalObserverNode(group, std::forward<F>(func), subjects ...))
48+
{ }
5149

5250
// Construct event observer with implicit group
5351
template <typename F, typename T>
5452
Observer(F&& func, const Event<T>& subject) :
5553
Observer::Observer(REACT_IMPL::CtorTag{ }, CreateEventObserverNode(std::forward<F>(func), subject))
56-
{ }
54+
{ }
5755

5856
// Construct event observer with explicit group
5957
template <typename F, typename T>
6058
Observer(const Group& group, F&& func, const Event<T>& subject) :
61-
Observer::Observer(REACT_IMPL::CtorTag{ }, CreateEventObserverNode(REACT_IMPL::PrivateGroupInterface::GraphPtr(group), std::forward<F>(func), subject))
62-
{ }
59+
Observer::Observer(REACT_IMPL::CtorTag{ }, CreateEventObserverNode(group, std::forward<F>(func), subject))
60+
{ }
6361

6462
// Constructed synced event observer with implicit group
6563
template <typename F, typename T, typename ... Us>
6664
Observer(F&& func, const Event<T>& subject, const Signal<Us>& ... signals) :
6765
Observer::Observer(REACT_IMPL::CtorTag{ }, CreateSyncedEventObserverNode(std::forward<F>(func), subject, signals ...))
68-
{ }
66+
{ }
6967

7068
// Constructed synced event observer with explicit group
7169
template <typename F, typename T, typename ... Us>
7270
Observer(const Group& group, F&& func, const Event<T>& subject, const Signal<Us>& ... signals) :
73-
Observer::Observer(REACT_IMPL::CtorTag{ }, CreateSyncedEventObserverNode(REACT_IMPL::PrivateGroupInterface::GraphPtr(group), std::forward<F>(func), subject, signals ...))
74-
{ }
75-
76-
void Cancel()
77-
{ nodePtr_.reset(); }
78-
79-
bool IsCancelled() const
80-
{ return nodePtr_ != nullptr; }
71+
Observer::Observer(REACT_IMPL::CtorTag{ }, CreateSyncedEventObserverNode(group, std::forward<F>(func), subject, signals ...))
72+
{ }
8173

82-
protected:
74+
public: //Internal
8375
// Private node ctor
8476
Observer(REACT_IMPL::CtorTag, std::shared_ptr<NodeType>&& nodePtr) :
8577
nodePtr_(std::move(nodePtr))
@@ -91,43 +83,42 @@ class Observer
9183
auto NodePtr() const -> const std::shared_ptr<NodeType>&
9284
{ return nodePtr_; }
9385

86+
protected:
9487
template <typename F, typename T1, typename ... Ts>
95-
auto CreateSignalObserverNode(const std::shared_ptr<REACT_IMPL::ReactiveGraph>& graphPtr, F&& func, const Signal<T1>& dep1, const Signal<Ts>& ... deps) -> decltype(auto)
88+
auto CreateSignalObserverNode(const Group& group, F&& func, const Signal<T1>& dep1, const Signal<Ts>& ... deps) -> decltype(auto)
9689
{
9790
using REACT_IMPL::PrivateSignalLinkNodeInterface;
9891
using ObsNodeType = REACT_IMPL::SignalObserverNode<typename std::decay<F>::type, T1, Ts ...>;
9992

10093
return std::make_shared<ObsNodeType>(
101-
graphPtr,
94+
group,
10295
std::forward<F>(func),
10396
PrivateSignalLinkNodeInterface::GetLocalNodePtr(graphPtr, dep1), PrivateSignalLinkNodeInterface::GetLocalNodePtr(graphPtr, deps) ...);
10497
}
10598

10699
template <typename F, typename T1, typename ... Ts>
107100
auto CreateSignalObserverNode(F&& func, const Signal<T1>& dep1, const Signal<Ts>& ... deps) -> decltype(auto)
108101
{
109-
using REACT_IMPL::PrivateNodeInterface;
110102
return CreateSignalObserverNode(PrivateNodeInterface::GraphPtr(dep1), std::forward<F>(func), dep1, deps ...);
111103
}
112104

113105
template <typename F, typename T>
114-
auto CreateEventObserverNode(const std::shared_ptr<REACT_IMPL::ReactiveGraph>& graphPtr, F&& func, const Event<T>& dep) -> decltype(auto)
106+
auto CreateEventObserverNode(const Group& group, F&& func, const Event<T>& dep) -> decltype(auto)
115107
{
116108
using REACT_IMPL::PrivateEventLinkNodeInterface;
117109
using ObsNodeType = REACT_IMPL::EventObserverNode<typename std::decay<F>::type, T>;
118110

119-
return std::make_shared<ObsNodeType>(graphPtr, std::forward<F>(func), PrivateEventLinkNodeInterface::GetLocalNodePtr(graphPtr, dep));
111+
return std::make_shared<ObsNodeType>(group, std::forward<F>(func), PrivateEventLinkNodeInterface::GetLocalNodePtr(graphPtr, dep));
120112
}
121113

122114
template <typename F, typename T>
123115
auto CreateEventObserverNode(F&& func, const Event<T>& dep) -> decltype(auto)
124116
{
125-
using REACT_IMPL::PrivateNodeInterface;
126117
return CreateEventObserverNode(PrivateNodeInterface::GraphPtr(dep), std::forward<F>(func), dep);
127118
}
128119

129120
template <typename F, typename T, typename ... Us>
130-
auto CreateSyncedEventObserverNode(const std::shared_ptr<REACT_IMPL::ReactiveGraph>& graphPtr, F&& func, const Event<T>& dep, const Signal<Us>& ... syncs) -> decltype(auto)
121+
auto CreateSyncedEventObserverNode(const Group& group, F&& func, const Event<T>& dep, const Signal<Us>& ... syncs) -> decltype(auto)
131122
{
132123
using REACT_IMPL::PrivateEventLinkNodeInterface;
133124
using REACT_IMPL::PrivateSignalLinkNodeInterface;
@@ -140,14 +131,11 @@ class Observer
140131
template <typename F, typename T, typename ... Us>
141132
auto CreateSyncedEventObserverNode(F&& func, const Event<T>& dep, const Signal<Us>& ... syncs) -> decltype(auto)
142133
{
143-
using REACT_IMPL::PrivateNodeInterface;
144134
return CreateSyncedEventObserverNode(PrivateNodeInterface::GraphPtr(dep), std::forward<F>(func), dep, syncs ...);
145135
}
146136

147137
private:
148-
std::shared_ptr<NodeType> nodePtr_;
149-
150-
friend struct REACT_IMPL::PrivateNodeInterface;
138+
std::shared_ptr<NodeType> nodePtr_;s
151139
};
152140

153141
/******************************************/ REACT_END /******************************************/

0 commit comments

Comments
 (0)