KWStyle - itkSmartPointerForwardReference.txx
 
Matrix View
Description

1 /*=========================================================================
2
3   Program:   Insight Segmentation & Registration Toolkit
4   Module:    $RCSfile: itkSmartPointerForwardReference.txx.html,v $
5   Language:  C++
6   Date:      $Date: 2006/01/17 19:15:48 $
7   Version:   $Revision: 1.4 $
8
9   Copyright (c) Insight Software Consortium. All rights reserved.
10   See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
11
12      This software is distributed WITHOUT ANY WARRANTY; without even 
13      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
14      PURPOSE.  See the above copyright notices for more information.
15
16 =========================================================================*/
17 DEF #ifndef _itkSmartPointerForwardReference_txx
18 DEF #define _itkSmartPointerForwardReference_txx
19 #include "itkSmartPointerForwardReference.h"
20
21 namespace itk
22 {
23
24 //----------------------------------------------------------------------------
25 template <class T>
26 SmartPointerForwardReference<T>
27 ::SmartPointerForwardReference (const SmartPointerForwardReference<T> &p)
28
29   m_Pointer = p.m_Pointer; 
30   this->Register(); 
31 }
32   
33 //----------------------------------------------------------------------------
34 template <class T>
35 SmartPointerForwardReference<T>
36 ::SmartPointerForwardReference (const WeakPointer<T> &p)
37
38   m_Pointer = p.GetPointer(); 
39   this->Register(); 
40 }
41   
42 //----------------------------------------------------------------------------
43 template <class T>
44 SmartPointerForwardReference<T>
45 ::SmartPointerForwardReference (T *p)
46
47   m_Pointer = p; 
48   this->Register(); 
49 }                             
50   
51 //----------------------------------------------------------------------------
52 template <class T>
53 SmartPointerForwardReference<T>
54 ::~SmartPointerForwardReference ()
55 {
56   this->UnRegister();
57 }
58   
59 //----------------------------------------------------------------------------
60 template <class T>
61 T *
62 SmartPointerForwardReference<T>
63 ::operator -> () const
64
65   return m_Pointer; 
66 }
67
68 //----------------------------------------------------------------------------
69 template <class T>
70 SmartPointerForwardReference<T>
71 ::operator T * () const 
72
73   return m_Pointer; 
74 }
75   
76 //----------------------------------------------------------------------------
77 template <class T>
78 T *
79 SmartPointerForwardReference<T>
80 ::GetPointer () const 
81
82   return m_Pointer; 
83 }
84   
85 //----------------------------------------------------------------------------
86 template <class T>
87 bool 
88 SmartPointerForwardReference<T>
89 ::operator < (const SmartPointerForwardReference &r)
90
91   return (void*)m_Pointer < (void*) r.m_Pointer; 
92 }
93
94 //----------------------------------------------------------------------------
95 template <class T>
96 bool 
97 SmartPointerForwardReference<T>
98 ::operator > (const SmartPointerForwardReference &r)
99
100   return (void*)m_Pointer > (void*) r.m_Pointer; 
101 }
102
103 //----------------------------------------------------------------------------
104 template <class T>
105 bool 
106 SmartPointerForwardReference<T>
107 ::operator <= (const SmartPointerForwardReference &r)
108
109   return (void*)m_Pointer <= (void*) r.m_Pointer; 
110 }
111
112 //----------------------------------------------------------------------------
113 template <class T>
114 bool 
115 SmartPointerForwardReference<T>
116 ::operator >= (const SmartPointerForwardReference &r)
117
118   return (void*)m_Pointer >= (void*) r.m_Pointer; 
119 }
120
121 //----------------------------------------------------------------------------
122 template <class T>
123 SmartPointerForwardReference<T> &
124 SmartPointerForwardReference<T>
125 ::operator = (const SmartPointerForwardReference &r)
126
127   return this->operator = (r.GetPointer()); 
128 }
129   
130 //----------------------------------------------------------------------------
131 template <class T>
132 SmartPointerForwardReference<T> &
133 SmartPointerForwardReference<T>
134 ::operator = (const WeakPointer<T> &r)
135
136   return this->operator = (r.GetPointer()); 
137 }
138   
139 //----------------------------------------------------------------------------
140 template <class T>
141 SmartPointerForwardReference<T> &
142 SmartPointerForwardReference<T>
143 ::operator = (T *r)
144 {                                                              
145   if (m_Pointer != r)
146     {
147     T* tmp = m_Pointer; //avoid recursive unregisters by retaining temporarily
148     m_Pointer = r;
149     this->Register();
150     if ( tmp )
151       {
152       tmp->UnRegister();
153       }
154     }
155   return *this;
156 }
157   
158 //----------------------------------------------------------------------------
159 template <class T>
160 T *
161 SmartPointerForwardReference<T>
162 ::Print (std::ostream& os) const 
163
164   // This prints the object pointed to by the pointer  
165   (*m_Pointer).Print(os);  
166   return m_Pointer;
167
168
169 //----------------------------------------------------------------------------
170 template <class T>
171 void 
172 SmartPointerForwardReference<T>
173 ::Register()
174
175   if (m_Pointer)
176     {
177     m_Pointer->Register();
178     }
179 }
180   
181 //----------------------------------------------------------------------------
182 template <class T>
183 void 
184 SmartPointerForwardReference<T>
185 ::UnRegister()
186 {
187   if (m_Pointer)
188     {
189     m_Pointer->UnRegister();
190     }
191 }
192
193 //end namespace
194
195 #endif
196

Generated by KWStyle 1.0b on Tuesday January,17 at 02:14:47PM
© Kitware Inc.