Branch data Line data Source code
1 : : #include "CubitObserver.hpp"
2 : : #include "CubitObservable.hpp"
3 : : #include "CubitEvent.hpp"
4 : : #include "AppUtil.hpp"
5 : :
6 : 2521 : CubitObserver::CubitObserver()
7 : : {
8 : 2521 : observableCount = 0;
9 : 2521 : }
10 : :
11 : 1276 : CubitObserver::~CubitObserver()
12 : : {
13 [ - + ]: 1276 : assert(observableCount == 0);
14 [ - + ]: 1276 : }
15 : :
16 : 13085 : CubitStatus CubitObserver::register_observable(CubitObservable *observable)
17 : : {
18 [ - + ]: 13085 : if (observable == NULL)
19 : 0 : return CUBIT_FAILURE;
20 : :
21 : : //- add this observer to the observable's list, and if successful,
22 : : //- increment the observable count
23 : 13085 : CubitStatus success = observable->add_observer(this);
24 : :
25 [ + - ]: 13085 : if (success == CUBIT_SUCCESS)
26 : 13085 : observableCount++;
27 : :
28 : 13085 : return success;
29 : : }
30 : :
31 : 12734 : CubitStatus CubitObserver::unregister_observable(CubitObservable *observable)
32 : : {
33 [ - + ]: 12734 : if (observable == NULL)
34 : 0 : return CUBIT_FAILURE;
35 : :
36 : : //- remove this observer from the observable's list, and if successful,
37 : : //- decrement the observable count
38 : 12734 : CubitStatus success = CUBIT_SUCCESS;
39 : :
40 : : //- only call the remove function on the observable if we're not being called
41 : : //- from the observable
42 : 12734 : success = observable->remove_observer(this);
43 : :
44 [ + - ]: 12734 : if (success == CUBIT_SUCCESS)
45 : 12734 : observableCount--;
46 : :
47 : 12734 : return success;
48 : : }
49 : :
50 : 874 : CubitStatus CubitObserver::register_observer(CubitObserver* obs)
51 : : {
52 : 874 : AppUtil::instance()->event_dispatcher().add_observer(obs);
53 : 874 : return CUBIT_SUCCESS;
54 : : }
55 : :
56 : 0 : CubitStatus CubitObserver::unregister_observer(CubitObserver* obs)
57 : : {
58 : 0 : AppUtil::instance()->event_dispatcher().remove_observer(obs);
59 : 0 : return CUBIT_SUCCESS;
60 : : }
|