lestes::std::ptr< T > Class Template Reference

#include <ptr.hh>

Inheritance diagram for lestes::std::ptr< T >:

lestes::std::mem::root_pointer List of all members.

Public Types

typedef T pointee_type
 the type pointed to

Public Member Functions

 ptr (void)
 Creates ptr, initializes with NULL pointer.
 ptr (T *a_pointer)
 Creates ptr, initializes with pointer .
template<typename U>
 ptr (U *a_pointer)
 Creates ptr, initializes with pointer .
 ptr (const ptr< T > &other)
 Creates ptr, initializes with ptr to the same type.
template<typename U>
 ptr (const ptr< U > &other)
 Creates ptr, initializes with ptr.
template<typename U>
 ptr (const srp< U > &other)
 Creates ptr, initializes with srp.
 ~ptr (void)
 Destroys ptr.
T * operator-> (void) const
 Returns the pointer.
T & operator * (void) const
 Returns dereferenced pointer.
ptr< T > & operator= (T *a_pointer)
 Assigns a pointer.
template<typename U>
ptr< T > & operator= (U *a_pointer)
 Assigns a pointer.
ptr< T > & operator= (const ptr< T > &other)
 Assigns ptr of the same type.
template<typename U>
ptr< T > & operator= (const ptr< U > &other)
 Assigns ptr.
template<typename U>
ptr< T > & operator= (const srp< U > &other)
 Assigns srp.
 operator condition * (void) const
 Tests NULL pointer.
bool operator! (void) const
 Tests non NULL pointer.
bool operator== (T *a_pointer) const
 Compares to pointer.
template<typename U>
bool operator== (U *a_pointer) const
 Compares to pointer.
bool operator== (::std::ptrdiff_t a_pointer) const
 Compares to NULL.
template<typename U>
bool operator== (const ptr< U > &other) const
 Compares to ptr.
template<typename U>
bool operator== (const srp< U > &other) const
 Compares to srp.
bool operator!= (T *a_pointer) const
 Compares to pointer.
template<typename U>
bool operator!= (U *a_pointer) const
 Compares to pointer.
bool operator!= (::std::ptrdiff_t a_pointer) const
 Compares to NULL.
template<typename U>
bool operator!= (const ptr< U > &other) const
 Compares to ptr.
template<typename U>
bool operator!= (const srp< U > &other) const
 Compares to srp.
template<typename U>
ptr< U > dncast (void) const
 Performs dynamic cast to other type.
T * pointer_get (void) const
 Returns the pointer.
bool operator< (const ptr< T > &) const
 Compares two pointers for ordering.

Private Member Functions

void pointer_set (T *a_pointer)
 Sets the pointer.

Classes

struct  condition
 Condition class. More...

Detailed Description

template<typename T>
class lestes::std::ptr< T >

Represents structure pointer.
Parameters:
T The type of object pointed to.

Definition at line 53 of file ptr.hh.


Member Typedef Documentation

template<typename T>
typedef T lestes::std::ptr< T >::pointee_type

the type pointed to

Author:
TMA

Definition at line 87 of file ptr.hh.


Constructor & Destructor Documentation

template<typename T>
lestes::std::ptr< T >::ptr ( void   )  [inline]

Creates ptr, initializes with NULL pointer.

Creates ptr, initializes with NULL pointer.

Postcondition:
pointer_get() == NULL

Definition at line 75 of file ptr_bodies.hh.

References lestes::std::ptr< T >::pointer_set().

00075                       :
00076         root_pointer()
00077 {
00078         pointer_set(NULL);
00079 }

template<typename T>
lestes::std::ptr< T >::ptr ( T *  a_pointer  )  [inline]

Creates ptr, initializes with pointer .

Creates ptr, initializes with pointer.

Postcondition:
pointer_get() == a_pointer
Parameters:
a_pointer The initialization value.

Definition at line 50 of file ptr_bodies.hh.

References lestes::std::ptr< T >::pointer_set().

00050                               :
00051         root_pointer()
00052 {
00053         pointer_set(a_pointer);
00054 }

template<typename T>
template<typename U>
lestes::std::ptr< T >::ptr ( U *  a_pointer  )  [inline]

Creates ptr, initializes with pointer .

Creates ptr, initializes with pointer.

Postcondition:
pointer_get() == a_pointer
Parameters:
U The type of the initializer pointer.
a_pointer The initialization value.

Definition at line 64 of file ptr_bodies.hh.

References lestes::std::ptr< T >::pointer_set().

00064                               :
00065         root_pointer()
00066 {
00067         pointer_set(a_pointer);
00068 }

template<typename T>
lestes::std::ptr< T >::ptr ( const ptr< T > &  other  )  [inline]

Creates ptr, initializes with ptr to the same type.

Creates ptr, initializes with ptr to the same type. Workaround to avoid implicit copy constructor creation.

Postcondition:
pointer_get() == other.pointer_get()
Parameters:
other The ptr to initialize with.

Definition at line 88 of file ptr_bodies.hh.

References lestes::std::ptr< T >::pointer_get(), and lestes::std::ptr< T >::pointer_set().

00088                                      :
00089         root_pointer()
00090 {
00091         pointer_set(other.pointer_get());
00092 }

template<typename T>
template<typename U>
lestes::std::ptr< T >::ptr ( const ptr< U > &  other  )  [inline]

Creates ptr, initializes with ptr.

Creates ptr, initializes with ptr.

Postcondition:
pointer_get() == other.pointer_get()
Parameters:
U The type of the initializer ptr.
other The ptr to initialize with.

Definition at line 102 of file ptr_bodies.hh.

References lestes::std::ptr< T >::pointer_get(), and lestes::std::ptr< T >::pointer_set().

00102                                      :
00103         root_pointer()
00104 {
00105         pointer_set(other.pointer_get());
00106 }

template<typename T>
template<typename U>
lestes::std::ptr< T >::ptr ( const srp< U > &  other  )  [inline]

Creates ptr, initializes with srp.

Creates ptr, initializes with srp.

Postcondition:
pointer_get() == other.pointer_get()
Parameters:
U The type of the initializer srp.
other The srp to initialize with.

Definition at line 116 of file ptr_bodies.hh.

References lestes::std::srp< T >::pointer_get(), and lestes::std::ptr< T >::pointer_set().

00116                                      :
00117         root_pointer()
00118 {
00119         pointer_set(other.pointer_get());
00120 }

template<typename T>
lestes::std::ptr< T >::~ptr ( void   )  [inline]

Destroys ptr.

Destroys ptr.

Definition at line 126 of file ptr_bodies.hh.

00127 {
00128 }


Member Function Documentation

template<typename T>
T * lestes::std::ptr< T >::operator-> ( void   )  const [inline]

Returns the pointer.

Returns the pointer.

Returns:
The contained pointer.

Definition at line 135 of file ptr_bodies.hh.

References lassert2, and lestes::std::ptr< T >::pointer_get().

00136 {
00137         T * result = pointer_get();
00138         lassert2( result, "Dereferencing NULL pointer." );
00139         return result;
00140 }

template<typename T>
T & lestes::std::ptr< T >::operator * ( void   )  const [inline]

Returns dereferenced pointer.

Dereferences the pointer.

Returns:
The dereferenced pointer.

Definition at line 147 of file ptr_bodies.hh.

References lassert2, and lestes::std::ptr< T >::pointer_get().

00148 {
00149         T * presult = pointer_get();
00150         lassert2( presult, "Dereferencing NULL pointer." );
00151         return *presult;
00152 }

template<typename T>
ptr< T > & lestes::std::ptr< T >::operator= ( T *  a_pointer  )  [inline]

Assigns a pointer.

Assigns pointer.

Parameters:
a_pointer The pointer to assign.
Returns:
This ptr after the assignment.

Definition at line 160 of file ptr_bodies.hh.

References lestes::std::ptr< T >::pointer_set().

00161 {
00162         pointer_set(a_pointer);
00163         return *this;
00164 }

template<typename T>
template<typename U>
ptr< T > & lestes::std::ptr< T >::operator= ( U *  a_pointer  )  [inline]

Assigns a pointer.

Assigns pointer.

Parameters:
U The type of the assigned pointer.
a_pointer The pointer to assign.
Returns:
This ptr after the assignment.

Definition at line 174 of file ptr_bodies.hh.

References lestes::std::ptr< T >::pointer_set().

00175 {
00176         pointer_set(a_pointer);
00177         return *this;
00178 }

template<typename T>
ptr< T > & lestes::std::ptr< T >::operator= ( const ptr< T > &  other  )  [inline]

Assigns ptr of the same type.

Assigns ptr of the same type. Workaround to avoid implicit assignment operator creation.

Parameters:
other The ptr to assign.
Returns:
This ptr after assignment.

Definition at line 187 of file ptr_bodies.hh.

References lestes::std::ptr< T >::pointer_get(), and lestes::std::ptr< T >::pointer_set().

00188 {
00189         pointer_set(other.pointer_get());
00190         return *this;
00191 }

template<typename T>
template<typename U>
ptr< T > & lestes::std::ptr< T >::operator= ( const ptr< U > &  other  )  [inline]

Assigns ptr.

Assigns ptr.

Parameters:
U The type of the assigned ptr.
other The ptr to assign.
Returns:
This ptr after assignment.

Definition at line 201 of file ptr_bodies.hh.

References lestes::std::ptr< T >::pointer_get(), and lestes::std::ptr< T >::pointer_set().

00202 {
00203         pointer_set(other.pointer_get());
00204         return *this;
00205 }

template<typename T>
template<typename U>
ptr< T > & lestes::std::ptr< T >::operator= ( const srp< U > &  other  )  [inline]

Assigns srp.

Assigns srp.

Parameters:
U The type of the assigned srp.
other The other srp to assign.
Returns:
This ptr after assignment.

Definition at line 215 of file ptr_bodies.hh.

References lestes::std::srp< T >::pointer_get(), and lestes::std::ptr< T >::pointer_set().

00216 {
00217         pointer_set(other.pointer_get());
00218         return *this;
00219 }

template<typename T>
lestes::std::ptr< T >::operator condition * ( void   )  const [inline]

Tests NULL pointer.

Tests NULL pointer.

Returns:
Condition convertible to true if the pointer is NULL.

Definition at line 236 of file ptr_bodies.hh.

References lestes::std::ptr< T >::pointer_get().

00237 {
00238         static condition c;
00239         return pointer_get() ? &c : NULL;
00240 }

template<typename T>
bool lestes::std::ptr< T >::operator! ( void   )  const [inline]

Tests non NULL pointer.

Tests non NULL pointer.

Returns:
true if the pointer is not NULL.

Definition at line 248 of file ptr_bodies.hh.

References lestes::std::ptr< T >::pointer_get().

00249 {
00250         return !pointer_get();
00251 }

template<typename T>
bool lestes::std::ptr< T >::operator== ( T *  a_pointer  )  const [inline]

Compares to pointer.

Compares to pointer.

Returns:
true if both pointers are equal.

Definition at line 258 of file ptr_bodies.hh.

References lestes::std::ptr< T >::pointer_get().

00259 {
00260         return pointer_get() == a_pointer;
00261 }

template<typename T>
template<typename U>
bool lestes::std::ptr< T >::operator== ( U *  a_pointer  )  const [inline]

Compares to pointer.

Compares to pointer.

Parameters:
U The type of the compared pointer.
Returns:
true if both pointers are equal.

Definition at line 270 of file ptr_bodies.hh.

References lestes::std::ptr< T >::pointer_get().

00271 {
00272         return pointer_get() == a_pointer;
00273 }

template<typename T>
bool lestes::std::ptr< T >::operator== ( ::std::ptrdiff_t  a_pointer  )  const [inline]

Compares to NULL.

Compares to NULL pointer. Workaround to avoid implicit bool conversion.

Returns:
true if both pointers are equal.

Definition at line 280 of file ptr_bodies.hh.

References lassert, and lestes::std::ptr< T >::pointer_get().

00285 {
00286 #ifdef LESTES_STRICT_CHECKING
00287         // test whether really comparing with NULL
00288         lassert(!a_pointer);
00289 #endif
00290         return !pointer_get();
00291 }

template<typename T>
template<typename U>
bool lestes::std::ptr< T >::operator== ( const ptr< U > &  other  )  const [inline]

Compares to ptr.

Compares to ptr.

Parameters:
U The type of the compared pointer.
Returns:
true if both pointers are equal.

Definition at line 300 of file ptr_bodies.hh.

References lestes::std::ptr< T >::pointer_get().

00301 {
00302         return pointer_get() == other.pointer_get();
00303 }

template<typename T>
template<typename U>
bool lestes::std::ptr< T >::operator== ( const srp< U > &  other  )  const [inline]

Compares to srp.

Compares to other srp.

Parameters:
U The type of the compared srp.
Returns:
true if both pointers are equal.

Definition at line 312 of file ptr_bodies.hh.

References lestes::std::srp< T >::pointer_get(), and lestes::std::ptr< T >::pointer_get().

00313 {
00314         return pointer_get() == other.pointer_get();
00315 }

template<typename T>
bool lestes::std::ptr< T >::operator!= ( T *  a_pointer  )  const [inline]

Compares to pointer.

Compares to pointer.

Returns:
false if both pointers are equal.

Definition at line 322 of file ptr_bodies.hh.

References lestes::std::ptr< T >::pointer_get().

00323 {
00324         return pointer_get() != a_pointer;
00325 }

template<typename T>
template<typename U>
bool lestes::std::ptr< T >::operator!= ( U *  a_pointer  )  const [inline]

Compares to pointer.

Compares to pointer.

Parameters:
U The type of the compared pointer.
Returns:
false if both pointers are equal.

Definition at line 334 of file ptr_bodies.hh.

References lestes::std::ptr< T >::pointer_get().

00335 {
00336         return pointer_get() != a_pointer;
00337 }

template<typename T>
bool lestes::std::ptr< T >::operator!= ( ::std::ptrdiff_t  a_pointer  )  const [inline]

Compares to NULL.

Compares to NULL pointer. Workaround to avoid implicit bool conversion.

Returns:
false if both pointers are equal.

Definition at line 344 of file ptr_bodies.hh.

References lassert, and lestes::std::ptr< T >::pointer_get().

00345 {
00346 #ifdef LESTES_STRICT_CHECKING
00347         // test whether really comparing with NULL
00348         lassert(!a_pointer);
00349 #endif
00350         return pointer_get();
00351 }

template<typename T>
template<typename U>
bool lestes::std::ptr< T >::operator!= ( const ptr< U > &  other  )  const [inline]

Compares to ptr.

Compares to ptr.

Parameters:
U The type of the compared pointer.
Returns:
false if both pointers are equal.

Definition at line 360 of file ptr_bodies.hh.

References lestes::std::ptr< T >::pointer_get().

00361 {
00362         return pointer_get() != other.pointer_get();
00363 }

template<typename T>
template<typename U>
bool lestes::std::ptr< T >::operator!= ( const srp< U > &  other  )  const [inline]

Compares to srp.

Compares to other srp.

Parameters:
U The type of the compared srp.
Returns:
false if both pointers are equal.

Definition at line 372 of file ptr_bodies.hh.

References lestes::std::srp< T >::pointer_get(), and lestes::std::ptr< T >::pointer_get().

00373 {
00374         return pointer_get() != other.pointer_get();
00375 }

template<typename T>
template<typename U>
ptr< U > lestes::std::ptr< T >::dncast ( void   )  const [inline]

Performs dynamic cast to other type.

Performs dynamic cast on pointers.

When the dynamic type of the pointee is not the requested one or one derived from it, the function fails with an assertion. Null pointers do not make the function fail.

Parameters:
U The type of the target ptr.
Returns:
New ptr initialized with this ptr pointer.

Definition at line 388 of file ptr_bodies.hh.

References lassert2, and lestes::std::ptr< T >::pointer_get().

Referenced by lestes::std::ptr_test().

00389 {
00390         register T * source = pointer_get();
00391         register U * result = dynamic_cast<U *>(source);
00392         // crash when dncast failed (returned NULL given non-NULL argument)
00393         lassert2( !source || result, "Dncasting to wrong type." );
00394         return ptr<U>(result);
00395 }

template<typename T>
T * lestes::std::ptr< T >::pointer_get ( void   )  const [inline]

Returns the pointer.

Returns the pointer.

Returns:
The contained pointer.

Reimplemented from lestes::std::mem::root_pointer.

Definition at line 402 of file ptr_bodies.hh.

Referenced by lestes::std::ptr< T >::dncast(), lestes::std::ptr< T >::operator *(), lestes::std::ptr< T >::operator condition *(), lestes::std::ptr< T >::operator!(), lestes::std::srp< T >::operator!=(), lestes::std::ptr< T >::operator!=(), lestes::std::ptr< T >::operator->(), lestes::std::ptr< T >::operator<(), lestes::std::srp< T >::operator=(), lestes::std::ptr< T >::operator=(), lestes::std::srp< T >::operator==(), lestes::std::ptr< T >::operator==(), lestes::std::ptr< T >::ptr(), lestes::std::ptr_test(), and lestes::std::srp< T >::srp().

00403 {
00404         return static_cast<T *>(root_pointer::pointer_get());
00405 }

template<typename T>
bool lestes::std::ptr< T >::operator< ( const ptr< T > &  b  )  const [inline]

Compares two pointers for ordering.

Compares the pointer with a given one.

Parameters:
b The pointer to compare with.

Definition at line 412 of file ptr_bodies.hh.

References b, and lestes::std::ptr< T >::pointer_get().

00413 {
00414         return pointer_get() < b.pointer_get();
00415 }

template<typename T>
void lestes::std::ptr< T >::pointer_set ( T *  a_pointer  )  [inline, private]

Sets the pointer.

Sets the pointer.

Parameters:
a_pointer The pointer to set.

Definition at line 422 of file ptr_bodies.hh.

Referenced by lestes::std::ptr< T >::operator=(), and lestes::std::ptr< T >::ptr().

00423 {
00424         root_pointer::pointer_set(a_pointer);
00425 }


The documentation for this class was generated from the following files:
Generated on Mon Feb 12 18:26:00 2007 for lestes by doxygen 1.5.1-20070107