-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathactivereader.h
More file actions
44 lines (29 loc) · 1.15 KB
/
Copy pathactivereader.h
File metadata and controls
44 lines (29 loc) · 1.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#ifndef ACTIVE_READER_INCLUDE
#define ACTIVE_READER_INCLUDE
class CThing ;
class CEvent ;
#include "Monitor.h"
class CGenericActiveReader
{
public:
void HandleEvent(CEvent* event) ;
void SetReader(CMonitor* to_read) ;
~CGenericActiveReader() { if (mToRead) { mToRead->RemoveDeletionEvent(this) ; }}
void ToReadDied() { mToRead = NULL ; }
protected:
CMonitor* mToRead ;
};
template <class T> class CActiveReader : public CGenericActiveReader
{
public:
CActiveReader() { mToRead = NULL ; }
CActiveReader(T* to_read) {mToRead = (CMonitor*)to_read ; if (mToRead) { mToRead->AddDeletionEvent(this); } }
CActiveReader(CActiveReader<T>& copy) { mToRead = (CMonitor*)copy.mToRead ; if (mToRead) { mToRead->AddDeletionEvent(this); } }
void SetReader(T* to_read) { CGenericActiveReader::SetReader((CMonitor*)to_read);}
BOOL operator ==(T* right_term) { return mToRead == right_term; }
BOOL operator !=(T* right_term) { return mToRead != right_term; }
void operator =(T* right_term) { SetReader(right_term); }
T* operator ->() { return (T*)mToRead ; }
T* ToRead() { return (T*)mToRead ; }
};
#endif