/*
- Copyright (C) 2018 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2018-2021 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
*/
-#ifndef DCPOMATIC_CHANGE_H
-#define DCPOMATIC_CHANGE_H
-#include <boost/noncopyable.hpp>
+#ifndef DCPOMATIC_CHANGE_SIGNALLER_H
+#define DCPOMATIC_CHANGE_SIGNALLER_H
-template <class T>
-class ChangeSignaller : public boost::noncopyable
+
+enum class ChangeType
+{
+ PENDING,
+ DONE,
+ CANCELLED
+};
+
+
+template <class T, class P>
+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;
private:
T* _thing;
- int _property;
+ P _property;
bool _done;
};
+
#endif