@@ -68,10 +68,10 @@ class SignalPack;
6868// /////////////////////////////////////////////////////////////////////////////////////////////////
6969// / Common types & constants
7070// /////////////////////////////////////////////////////////////////////////////////////////////////
71- using REACT_IMPL ::TurnFlagsT ;
71+ using REACT_IMPL ::TransactionFlagsT ;
7272
73- // ETurnFlags
74- using REACT_IMPL ::ETurnFlags ;
73+ // ETransactionFlags
74+ using REACT_IMPL ::ETransactionFlags ;
7575using REACT_IMPL ::allow_merging;
7676
7777#ifdef REACT_ENABLE_LOGGING
@@ -87,9 +87,8 @@ enum EDomainMode
8787 parallel_concurrent
8888};
8989
90- // Expose enum types so aliases for engines can be declared, but don't
90+ // Expose enum type so aliases for engines can be declared, but don't
9191// expose the actual enum values as they are reserved for internal use.
92- using REACT_IMPL ::EInputMode;
9392using REACT_IMPL ::EPropagationMode;
9493
9594// /////////////////////////////////////////////////////////////////////////////////////////////////
@@ -101,21 +100,26 @@ class TransactionStatus
101100 using PtrT = REACT_IMPL ::WaitingStatePtrT;
102101
103102public:
104- TransactionStatus () :
103+ inline TransactionStatus () :
105104 statePtr_( StateT::Create() )
106105 {}
107106
108- TransactionStatus (const TransactionStatus&) = default ;
107+ TransactionStatus (const TransactionStatus&) = delete ;
108+ TransactionStatus& operator =(const TransactionStatus&) = delete ;
109109
110- TransactionStatus (TransactionStatus&& other) :
110+ inline TransactionStatus (TransactionStatus&& other) :
111111 statePtr_( std::move(other.statePtr_) )
112- {}
113-
114- TransactionStatus& operator =( const TransactionStatus&) = default ;
112+ {
113+ other. statePtr_ = StateT::Create ();
114+ }
115115
116- TransactionStatus& operator =(TransactionStatus&& other)
116+ inline TransactionStatus& operator =(TransactionStatus&& other)
117117 {
118- statePtr_ = std::move (other.statePtr_ );
118+ if (this != &other)
119+ {
120+ statePtr_ = std::move (other.statePtr_ );
121+ other.statePtr_ = StateT::Create ();
122+ }
119123 return *this ;
120124 }
121125
@@ -132,7 +136,7 @@ class TransactionStatus
132136 friend void AsyncTransaction (TransactionStatus& status, F&& func);
133137
134138 template <typename D, typename F>
135- friend void AsyncTransaction (TurnFlagsT flags, TransactionStatus& status, F&& func);
139+ friend void AsyncTransaction (TransactionFlagsT flags, TransactionStatus& status, F&& func);
136140};
137141
138142// /////////////////////////////////////////////////////////////////////////////////////////////////
@@ -242,7 +246,7 @@ template
242246 typename S,
243247 typename FIn
244248>
245- auto MakeContinuation (TurnFlagsT flags, const Signal<D,S>& trigger, FIn&& func)
249+ auto MakeContinuation (TransactionFlagsT flags, const Signal<D,S>& trigger, FIn&& func)
246250 -> Continuation<D,DOut>
247251{
248252 static_assert (DOut::is_concurrent,
@@ -279,7 +283,7 @@ template
279283 typename E,
280284 typename FIn
281285>
282- auto MakeContinuation (TurnFlagsT flags, const Events<D,E>& trigger, FIn&& func)
286+ auto MakeContinuation (TransactionFlagsT flags, const Events<D,E>& trigger, FIn&& func)
283287 -> Continuation<D,DOut>
284288{
285289 static_assert (DOut::is_concurrent,
@@ -317,7 +321,7 @@ template
317321 typename FIn,
318322 typename ... TDepValues
319323>
320- auto MakeContinuation (TurnFlagsT flags, const Events<D,E>& trigger,
324+ auto MakeContinuation (TransactionFlagsT flags, const Events<D,E>& trigger,
321325 const SignalPack<D,TDepValues...>& depPack, FIn&& func)
322326 -> Continuation<D,DOut>
323327{
@@ -329,7 +333,7 @@ auto MakeContinuation(TurnFlagsT flags, const Events<D,E>& trigger,
329333
330334 struct NodeBuilder_
331335 {
332- NodeBuilder_ (TurnFlagsT flags, const Events<D,E>& trigger, FIn&& func) :
336+ NodeBuilder_ (TransactionFlagsT flags, const Events<D,E>& trigger, FIn&& func) :
333337 MyFlags ( flags ),
334338 MyTrigger ( trigger ),
335339 MyFunc ( std::forward<FIn>(func) )
@@ -345,7 +349,7 @@ auto MakeContinuation(TurnFlagsT flags, const Events<D,E>& trigger,
345349 std::forward<FIn>(MyFunc), deps.NodePtr () ...));
346350 }
347351
348- TurnFlagsT MyFlags;
352+ TransactionFlagsT MyFlags;
349353 const Events<D,E>& MyTrigger;
350354 FIn MyFunc;
351355 };
@@ -381,7 +385,7 @@ void DoTransaction(F&& func)
381385}
382386
383387template <typename D, typename F>
384- void DoTransaction (TurnFlagsT flags, F&& func)
388+ void DoTransaction (TransactionFlagsT flags, F&& func)
385389{
386390 using REACT_IMPL ::DomainSpecificInputManager;
387391 DomainSpecificInputManager<D>::Instance ().DoTransaction (flags, std::forward<F>(func));
@@ -401,7 +405,7 @@ void AsyncTransaction(F&& func)
401405}
402406
403407template <typename D, typename F>
404- void AsyncTransaction (TurnFlagsT flags, F&& func)
408+ void AsyncTransaction (TransactionFlagsT flags, F&& func)
405409{
406410 static_assert (D::is_concurrent, " AsyncTransaction requires concurrent domain." );
407411
@@ -422,7 +426,7 @@ void AsyncTransaction(TransactionStatus& status, F&& func)
422426}
423427
424428template <typename D, typename F>
425- void AsyncTransaction (TurnFlagsT flags, TransactionStatus& status, F&& func)
429+ void AsyncTransaction (TransactionFlagsT flags, TransactionStatus& status, F&& func)
426430{
427431 static_assert (D::is_concurrent, " AsyncTransaction requires concurrent domain." );
428432
0 commit comments