11// -*- C++ -*-
2- #define ACE_COMPUTE_BASED_POINTER (P ) (((char *) (P) - (P)->base_offset_) + (P)->target_)
32#include " ace/Global_Macros.h"
43
54ACE_BEGIN_VERSIONED_NAMESPACE_DECL
65
76template <class CONCRETE > ACE_INLINE CONCRETE *
8- ACE_Based_Pointer<CONCRETE>::operator ->(void )
7+ ACE_Based_Pointer_Basic<CONCRETE>::based (ACE_Based_Pointer_Basic *p)
8+ {
9+ return reinterpret_cast <CONCRETE *> (reinterpret_cast <char *> (p) - p->base_offset_ + p->target_ );
10+ }
11+
12+ template <class CONCRETE > ACE_INLINE CONCRETE const *
13+ ACE_Based_Pointer_Basic<CONCRETE>::based (ACE_Based_Pointer_Basic const *p)
14+ {
15+ return reinterpret_cast <CONCRETE const *> (reinterpret_cast <const char *> (p) - p->base_offset_ + p->target_ );
16+ }
17+
18+ template <class CONCRETE > ACE_INLINE CONCRETE *
19+ ACE_Based_Pointer<CONCRETE>::operator -> ()
920{
1021 ACE_TRACE (" ACE_Based_Pointer<CONCRETE>::operator->" );
11- return reinterpret_cast <CONCRETE *> ( ACE_COMPUTE_BASED_POINTER ( this ) );
22+ return ACE_Based_Pointer::based ( this );
1223}
1324
1425template <class CONCRETE > ACE_INLINE void
@@ -39,7 +50,7 @@ template <class CONCRETE> ACE_INLINE CONCRETE
3950ACE_Based_Pointer_Basic<CONCRETE>::operator *(void ) const
4051{
4152 ACE_TRACE (" ACE_Based_Pointer_Basic<CONCRETE>::operator *" );
42- return *reinterpret_cast <CONCRETE *> ( ACE_COMPUTE_BASED_POINTER ( this ) );
53+ return *ACE_Based_Pointer_Basic::based ( this );
4354}
4455
4556template <class CONCRETE > ACE_INLINE CONCRETE *
@@ -50,7 +61,7 @@ ACE_Based_Pointer_Basic<CONCRETE>::addr (void) const
5061 if (this ->target_ == -1 )
5162 return 0 ;
5263 else
53- return reinterpret_cast <CONCRETE *> (ACE_COMPUTE_BASED_POINTER (this ));
64+ return const_cast <CONCRETE *> (ACE_Based_Pointer_Basic::based (this ));
5465}
5566
5667template <class CONCRETE > ACE_INLINE
@@ -65,9 +76,7 @@ template <class CONCRETE> ACE_INLINE CONCRETE
6576ACE_Based_Pointer_Basic<CONCRETE>::operator [] (int index) const
6677{
6778 ACE_TRACE (" ACE_Based_Pointer_Basic<CONCRETE>::operator []" );
68- CONCRETE *c =
69- reinterpret_cast <CONCRETE *> (ACE_COMPUTE_BASED_POINTER (this ));
70- return c[index];
79+ return ACE_Based_Pointer_Basic::based (this )[index];
7180}
7281
7382template <class CONCRETE > ACE_INLINE void
@@ -81,7 +90,7 @@ template <class CONCRETE> ACE_INLINE bool
8190ACE_Based_Pointer_Basic<CONCRETE>::operator == (const ACE_Based_Pointer_Basic<CONCRETE> &rhs) const
8291{
8392 ACE_TRACE (" ACE_Based_Pointer_Basic<CONCRETE>::operator ==" );
84- return ACE_COMPUTE_BASED_POINTER (this ) == ACE_COMPUTE_BASED_POINTER (&rhs);
93+ return ACE_Based_Pointer_Basic::based (this ) == ACE_Based_Pointer_Basic::based (&rhs);
8594}
8695
8796template <class CONCRETE > ACE_INLINE bool
@@ -95,28 +104,28 @@ template <class CONCRETE> ACE_INLINE bool
95104ACE_Based_Pointer_Basic<CONCRETE>::operator < (const ACE_Based_Pointer_Basic<CONCRETE> &rhs) const
96105{
97106 ACE_TRACE (" ACE_Based_Pointer_Basic<CONCRETE>::operator <" );
98- return ACE_COMPUTE_BASED_POINTER (this ) < ACE_COMPUTE_BASED_POINTER (&rhs);
107+ return ACE_Based_Pointer_Basic::based (this ) < ACE_Based_Pointer_Basic::based (&rhs);
99108}
100109
101110template <class CONCRETE > ACE_INLINE bool
102111ACE_Based_Pointer_Basic<CONCRETE>::operator <= (const ACE_Based_Pointer_Basic<CONCRETE> &rhs) const
103112{
104113 ACE_TRACE (" ACE_Based_Pointer_Basic<CONCRETE>::operator <=" );
105- return ACE_COMPUTE_BASED_POINTER (this ) <= ACE_COMPUTE_BASED_POINTER (&rhs);
114+ return ACE_Based_Pointer_Basic::based (this ) <= ACE_Based_Pointer_Basic::based (&rhs);
106115}
107116
108117template <class CONCRETE > ACE_INLINE bool
109118ACE_Based_Pointer_Basic<CONCRETE>::operator > (const ACE_Based_Pointer_Basic<CONCRETE> &rhs) const
110119{
111120 ACE_TRACE (" ACE_Based_Pointer_Basic<CONCRETE>::operator >" );
112- return ACE_COMPUTE_BASED_POINTER (this ) > ACE_COMPUTE_BASED_POINTER (&rhs);
121+ return ACE_Based_Pointer_Basic::based (this ) > ACE_Based_Pointer_Basic::based (&rhs);
113122}
114123
115124template <class CONCRETE > ACE_INLINE bool
116125ACE_Based_Pointer_Basic<CONCRETE>::operator >= (const ACE_Based_Pointer_Basic<CONCRETE> &rhs) const
117126{
118127 ACE_TRACE (" ACE_Based_Pointer_Basic<CONCRETE>::operator >=" );
119- return ACE_COMPUTE_BASED_POINTER (this ) >= ACE_COMPUTE_BASED_POINTER (&rhs);
128+ return ACE_Based_Pointer_Basic::based (this ) >= ACE_Based_Pointer_Basic::based (&rhs);
120129}
121130
122131template <class CONCRETE > ACE_INLINE void
0 commit comments