VR-Link API Documentation for HLA 1.3
Home
Namespaces
Classes
Files
Examples
Libraries
File List
File Members
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 Wed Aug 14 15:35:11 EDT 2013 from SVN revision 130445
Copyright © 2005-2013 VT MÄK. All Rights Reserved (
www.mak.com
)