MAK Data Logger API Documentation for DIS
Home
Modules
Namespaces
Classes
Files
Examples
Libraries
File List
File Members
libsrc
lgrUtil
observe.h
Go to the documentation of this file.
1
/******************************************************************************
2
** Copyright (c) 1992-2010 VT MAK
3
** All rights reserved.
4
******************************************************************************/
5
9
10
#ifndef observe_H_
11
#define observe_H_
12
13
#include "
observeConnection.h
"
14
#include "
observeEvent.h
"
15
16
namespace
MAKLogger
17
{
18
21
template
<
typename
SubjectType>
22
class
DtObserver
:
public
DtObserveConnectionComponent
23
{
24
public
:
25
27
virtual
~DtObserver
()
28
{
29
disconnectAll
();
30
}
31
33
virtual
void
disconnect
(
DtObserveEvent<SubjectType>
* event)
34
{
35
DtObserveConnectionSP
sharedCon =
findEventObserverConnection
(event,
this
);
36
if
(sharedCon)
37
{
38
sharedCon->disconnect(sharedCon);
39
}
40
}
41
43
virtual
void
observe
(
const
SubjectType&) = 0;
44
};
45
46
50
template
<
typename
SubjectType>
51
class
DtObserverCallback
:
public
DtObserver
<SubjectType>
52
{
53
public
:
54
55
typedef
void (*
ObserverFunction
)(
const
SubjectType&,
void
*);
56
57
DtObserverCallback
(
ObserverFunction
function
,
void
* userData) :
58
myFunction
(function),
59
myData
(userData)
60
{
61
}
62
63
virtual
~DtObserverCallback
(){}
64
65
void
observe
(
const
SubjectType& subject)
66
{
67
(*myFunction)(subject,
myData
);
68
}
69
70
protected
:
71
73
DtObserverCallback
(
const
DtObserverCallback
&);
75
DtObserverCallback
&
operator=
(
const
DtObserverCallback
&);
76
77
78
ObserverFunction
myFunction
;
79
void
*
myData
;
80
};
81
91
template
<
typename
ClassType,
typename
SubjectType>
92
class
DtObserverFunctor
:
public
DtObserver
<SubjectType>
93
{
94
public
:
95
96
typedef
void (ClassType::*
ObserverMemberFunction
)(
const
SubjectType&);
97
98
DtObserverFunctor
(ClassType&
object
,
ObserverMemberFunction
function
) :
99
myObject
(object),
100
myFunction
(function)
101
{
102
}
103
104
virtual
~DtObserverFunctor
(){}
105
106
void
observe
(
const
SubjectType& subject)
107
{
108
(
myObject
.*
myFunction
)(subject);
109
}
110
111
protected
:
112
114
DtObserverFunctor
(
const
DtObserverFunctor
&);
116
DtObserverFunctor
&
operator=
(
const
DtObserverFunctor
&);
117
118
ClassType&
myObject
;
119
ObserverMemberFunction
myFunction
;
120
};
121
}
122
123
#endif
Document ID: Generated on Thu Apr 10 18:53:01 EDT 2014 from SVN revision 138105
Copyright © 2005-2012 VT MÄK. All Rights Reserved (
www.mak.com
)