VR-Link API Documentation for HLA 1.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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 
This file contains the declaration of DtObserver.

Document ID: Generated on Wed Mar 27 02:04:30 EDT 2024 from SVN revision 264570
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)