VR-Link API Documentation for HLA Evolved
Home
Namespaces
Classes
Files
Examples
Libraries
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
examples
obsolete
declSmartPtr.h
Go to the documentation of this file.
1
/*********************************************************************
2
** Copyright (c) 1997 MaK Technologies, Inc.
3
** All rights reserved.
4
*********************************************************************/
5
/*********************************************************************
6
** $RCSfile: declSmartPtr.h,v $ $Revision: 1.1 $ $State: Exp $
7
*********************************************************************/
8
11
20
//
25
26
#include "
vlObserver.h
"
27
28
#define DtDECLARE_DEFINE_SMART_PTR(ClassName) \
29
class DT_DLL_VLUTIL ClassName##Ptr : public DtObserver \
30
{ \
31
public: \
32
\
33
ClassName##Ptr(ClassName* pointedAt); \
34
\
35
virtual ~ClassName##Ptr(); \
36
\
37
ClassName##Ptr(const ClassName##Ptr& orig); \
38
\
39
ClassName##Ptr& operator=(const ClassName##Ptr& orig); \
40
\
41
bool stillGood() const; \
42
\
43
bool operator!() const; \
44
\
45
ClassName* operator->() const; \
46
\
47
operator ClassName*() const; \
48
\
49
protected: \
50
\
51
virtual bool startObserving(DtObservee* toObserve); \
52
\
53
virtual bool stopObserving(DtObservee* observed); \
54
\
55
}; \
56
\
57
ClassName##Ptr::ClassName##Ptr(ClassName* pointedAt) : \
58
DtObserver() \
59
{ \
60
internalStartObserving(pointedAt); \
61
} \
62
\
63
ClassName##Ptr::~ClassName##Ptr() \
64
{ \
65
} \
66
\
67
ClassName##Ptr::ClassName##Ptr(const ClassName##Ptr& orig) : \
68
DtObserver(orig) \
69
{ \
70
} \
71
\
72
ClassName##Ptr& ClassName##Ptr::operator=(const ClassName##Ptr& orig) \
73
{ \
74
if (this == &orig) \
75
{ \
76
return *this; \
77
} \
78
\
79
DtObserver::operator=(orig); \
80
\
81
return *this; \
82
} \
83
\
84
bool ClassName##Ptr::startObserving(DtObservee* toObserve) \
85
{ \
86
return DtObserver::startObserving(toObserve); \
87
} \
88
\
89
bool ClassName##Ptr::stopObserving(DtObservee* toObserve) \
90
{ \
91
return DtObserver::stopObserving(toObserve); \
92
} \
93
\
94
bool ClassName##Ptr::stillGood() const \
95
{ \
96
return operator->() ? true : false; \
97
} \
98
\
99
bool ClassName##Ptr::operator!() const \
100
{ \
101
return !operator->() ? true : false; \
102
} \
103
\
104
ClassName* ClassName##Ptr::operator->() const \
105
{ \
106
DtListItem* item = myObjectsAmObserving.first(); \
107
if (!item) \
108
{ \
109
return NULL; \
110
} \
111
return (ClassName*)item->data(); \
112
} \
113
\
114
ClassName##Ptr::operator ClassName*() const \
115
{ \
116
return operator->(); \
117
} \
118
Document ID: Generated on Fri May 15 06:36:13 EDT 2015 from SVN revision 153263
Copyright © 2005-2014 VT MÄK. All Rights Reserved (
www.mak.com
)