X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fchange_signaller.h;h=8612cf42672b2c8ca42ae270bb896925a6cd20d4;hb=b56ca8250b8eae123c0992a50f5cabe99e655763;hp=ec1f14ea3e0f987c7c0b2d328af1233cf83f1267;hpb=5dbd022f3abb0ebab57fb67073a07ed60df902a6;p=dcpomatic.git diff --git a/src/lib/change_signaller.h b/src/lib/change_signaller.h index ec1f14ea3..8612cf426 100644 --- a/src/lib/change_signaller.h +++ b/src/lib/change_signaller.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2018 Carl Hetherington + Copyright (C) 2018-2021 Carl Hetherington This file is part of DCP-o-matic. @@ -18,32 +18,43 @@ */ -#ifndef DCPOMATIC_CHANGE_H -#define DCPOMATIC_CHANGE_H -#include +#ifndef DCPOMATIC_CHANGE_SIGNALLER_H +#define DCPOMATIC_CHANGE_SIGNALLER_H -template -class ChangeSignaller : public boost::noncopyable + +enum class ChangeType +{ + PENDING, + DONE, + CANCELLED +}; + + +template +class ChangeSignaller { public: - ChangeSignaller (T* t, int p) + ChangeSignaller (T* t, P p) : _thing (t) , _property (p) , _done (true) { - _thing->signal_change (CHANGE_TYPE_PENDING, _property); + _thing->signal_change (ChangeType::PENDING, _property); } ~ChangeSignaller () { if (_done) { - _thing->signal_change (CHANGE_TYPE_DONE, _property); + _thing->signal_change (ChangeType::DONE, _property); } else { - _thing->signal_change (CHANGE_TYPE_CANCELLED, _property); + _thing->signal_change (ChangeType::CANCELLED, _property); } } + ChangeSignaller (ChangeSignaller const&) = delete; + ChangeSignaller& operator= (ChangeSignaller const&) = delete; + void abort () { _done = false; @@ -51,8 +62,9 @@ public: private: T* _thing; - int _property; + P _property; bool _done; }; + #endif