source: src/Patterns/unittests/stubs/ObservedValue_threeNumbers.hpp@ 039e15

Last change on this file since 039e15 was 454bc54, checked in by Frederik Heber <heber@…>, 10 years ago

Added new pattern ObservedValue, contrary to Cacheable.

  • essentially updates immediately and caches a value for off-line use, safe- guard with mutexes.
  • added unit test for ObservedValue.
  • factored threeNumbers stub out of CacheableUnitTest, also used the stub in ObservedValueUnitTest.
  • we may now signOn() to Notification with a priority.
  • Cacheable can also update now via notification channels not just for global updates.
  • Observable can now also instantiate the channels directly if given a list. This was necessary as Cacheable or ObservedValue are instantiated in the constructor, too, and if listening to channels, these must already be present.
  • FIX: Channels::addChannels() used NDEBUG wrong way round.
  • ObservedValue::get() returns reference.
  • Property mode set to 100644
File size: 904 bytes
RevLine 
[454bc54]1/*
2 * ObservedValue_threeNumbers.hpp
3 *
4 * Created on: Jun 19, 2015
5 * Author: heber
6 */
7
8#ifndef OBSERVEDVALUETHREENUMBERS_HPP_
9#define OBSERVEDVALUETHREENUMBERS_HPP_
10
11// include config.h
12#ifdef HAVE_CONFIG_H
13#include <config.h>
14#endif
15
16#include "CodePatterns/ObservedValue.hpp"
17#include "CodePatterns/Observer/Observable.hpp"
18#include "CodePatterns/Observer/Notification.hpp"
19
20class ObservedValue_threeNumbers : public Observable {
21public:
22 int x;
23 int y;
24 int z;
25 ObservedValue<int> sum;
26 mutable bool hasRecalced;
27
28 enum NotificationType {
29 XChanged,
30 YChanged,
31 ZChanged,
32 NotificationType_MAX
33 };
34
35 void setX(int _x);
36 void setY(int _y);
37 void setZ(int _z);
38
39 int calcSum() const;
40
41 ObservedValue_threeNumbers(
42 int _x,
43 int _y,
44 int _z,
45 Observable::channels_t channels = Observable::channels_t());
46};
47
48#endif /* OBSERVEDVALUETHREENUMBERS_HPP_ */
Note: See TracBrowser for help on using the repository browser.