swift
testsharedstate.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2020 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
11 #include <QMetaType>
12 
20 
21 namespace MiscTest
22 {
24  class CTestFilter : public swift::misc::CValueObject<CTestFilter>
25  {
26  public:
27  bool matches(const swift::misc::CVariant &value) const
28  {
29  return value.canConvert<unsigned>() && (value.to<unsigned>() & m_mask);
30  }
31  QString convertToQString(bool = false) const { return QString::number(m_mask); }
32  CTestFilter(unsigned mask = ~0u) : m_mask(mask) {}
33 
34  private:
35  unsigned m_mask = ~0u;
36  SWIFT_METACLASS(CTestFilter, SWIFT_METAMEMBER(mask));
37  };
38 } // namespace MiscTest
39 
41 Q_DECLARE_METATYPE(MiscTest::CTestFilter);
43 
44 namespace MiscTest
45 {
48  {
49  Q_OBJECT
50  SWIFT_SHARED_STATE_CHANNEL("test_scalar_channel")
51  public:
53  CTestScalarMutator(QObject *parent) : CScalarMutator(parent) {}
54  };
55 
58  {
59  Q_OBJECT
60  SWIFT_SHARED_STATE_CHANNEL("test_scalar_channel")
61  public:
63  CTestScalarJournal(QObject *parent) : CScalarJournal(parent) {}
64  };
65 
68  {
69  Q_OBJECT
70  SWIFT_SHARED_STATE_CHANNEL("test_scalar_channel")
71  public:
73  CTestScalarObserver(QObject *parent) : CScalarObserver(parent) {}
74  virtual void onValueChanged(const int &) override {}
75  };
76 
79  {
80  Q_OBJECT
81  SWIFT_SHARED_STATE_CHANNEL("test_list_channel")
82  public:
84  CTestListMutator(QObject *parent) : CListMutator(parent) {}
85  };
86 
89  {
90  Q_OBJECT
91  SWIFT_SHARED_STATE_CHANNEL("test_list_channel")
92  public:
94  CTestListJournal(QObject *parent) : CListJournal(parent) {}
95  };
96 
98  class CTestListObserver : public swift::misc::shared_state::CListObserver<QList<int>, CTestFilter>
99  {
100  Q_OBJECT
101  SWIFT_SHARED_STATE_CHANNEL("test_list_channel")
102  public:
104  CTestListObserver(QObject *parent) : CListObserver(parent) {}
105 
108 
110  virtual void onElementAdded(const int &) override {}
111 
113  virtual void onElementsReplaced(const QList<int> &) override {}
115  };
116 } // namespace MiscTest
117 
List journal subclass.
CTestListJournal(QObject *parent)
Ctor.
List mutator subclass.
CTestListMutator(QObject *parent)
Ctor.
List observer subclass.
CTestListObserver(QObject *parent)
Ctor.
virtual void onElementsReplaced(const QList< int > &)
Called when the whole list is updated wholesale.
virtual void onElementAdded(const int &)
Called when an element matching the filter is added to the list.
Scalar journal subclass.
CTestScalarJournal(QObject *parent)
Ctor.
Scalar mutator subclass.
CTestScalarMutator(QObject *parent)
Ctor.
Scalar observer subclass.
CTestScalarObserver(QObject *parent)
Ctor.
virtual void onValueChanged(const int &)
Called when the scalar value changes.
Mix of the most commonly used mixin classes.
Definition: valueobject.h:114
Wrapper around QVariant which provides transparent access to CValueObject methods of the contained ob...
Definition: variant.h:66
T to() const
Synonym for value().
Definition: variant.h:176
bool canConvert(int typeId) const
True if this variant can be converted to the type with the given metatype ID.
Base class for an object that shares state with a corresponding CListObserver subclass object.
Definition: listjournal.h:53
Base class for an object that shares state with a corresponding CListObserver subclass object.
Definition: listmutator.h:50
Base class for an object that shares state with a corresponding CListMutator subclass object.
Definition: listobserver.h:63
Base class for an object that shares state with a corresponding CScalarObserver subclass object.
Definition: scalarjournal.h:54
CScalarJournal(QObject *parent)
Constructor.
Definition: scalarjournal.h:57
Base class for an object that shares state with a corresponding CScalarObserver subclass object.
Definition: scalarmutator.h:50
CScalarMutator(QObject *parent)
Constructor.
Definition: scalarmutator.h:53
Base class for an object that shares state with a corresponding CScalarMutator subclass object.
#define SWIFT_METAMEMBER(MEMBER,...)
Macro to define an element within a metaclass.
Definition: metaclass.h:73
#define SWIFT_METACLASS(CLASS,...)
Macro to define a nested metaclass that describes the attributes of its enclosing class.
Definition: metaclass.h:53
#define SWIFT_SHARED_STATE_CHANNEL(ID)
Put this macro in the private section of a class to set the channel of its child endpoints.
Definition: datalink.h:27