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

#include <srp.hh>

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

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

Public Types

typedef T pointee_type
 the type pointed to

Public Member Functions

 srp (void)
 Creates srp, initializes with NULL pointer.
 srp (T *a_pointer)
 Creates srp, initializes with pointer .
template<typename U>
 srp (U *a_pointer)
 Creates srp, initializes with pointer .
 srp (const srp< T > &other)
 Creates srp, initializes with srp to the same type.
template<typename U>
 srp (const srp< U > &other)
 Creates srp, initializes with srp.
template<typename U>
 srp (const ptr< U > &other)
 Creates srp, initializes with ptr.
 ~srp (void)
 Destroys srp.
T * operator-> (void) const
 Returns the pointer.
T & operator * (void) const
 Returns dereferenced pointer.
srp< T > & operator= (T *a_pointer)
 Assigns a pointer.
template<typename U>
srp< T > & operator= (U *a_pointer)
 Assigns a pointer.
srp< T > & operator= (const srp< T > &other)
 Assigns srp of the same type.
template<typename U>
srp< T > & operator= (const ptr< U > &other)
 Assigns ptr.
template<typename U>
srp< 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 srp< 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::srp< T >

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

Definition at line 53 of file srp.hh.


Member Typedef Documentation

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

the type pointed to

Author:
TMA

Definition at line 87 of file srp.hh.


Constructor & Destructor Documentation

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

Creates srp, initializes with NULL pointer.

Creates srp, initializes with NULL pointer.

Postcondition:
pointer_get() == NULL

Definition at line 74 of file srp_bodies.hh.

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

00074                       :
00075         simple_pointer()
00076 {
00077         pointer_set(NULL);
00078 }

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

Creates srp, initializes with pointer .

Creates srp, initializes with pointer.

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

Definition at line 49 of file srp_bodies.hh.

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

00049                               :
00050         simple_pointer()
00051 {
00052         pointer_set(a_pointer);
00053 }

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

Creates srp, initializes with pointer .

Creates srp, initializes with pointer.

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

Definition at line 63 of file srp_bodies.hh.

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

00063                               :
00064         simple_pointer()
00065 {
00066         pointer_set(a_pointer);
00067 }

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

Creates srp, initializes with srp to the same type.

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

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

Definition at line 87 of file srp_bodies.hh.

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

00087                                      :
00088         simple_pointer()
00089 {
00090         pointer_set(other.pointer_get());
00091 }

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

Creates srp, initializes with srp.

Creates srp, 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 101 of file srp_bodies.hh.

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

00101                                      :
00102         simple_pointer()
00103 {
00104         pointer_set(other.pointer_get());
00105 }

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

Creates srp, initializes with ptr.

Creates srp, 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 115 of file srp_bodies.hh.

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

00115                                      :
00116         simple_pointer()
00117 {
00118         pointer_set(other.pointer_get());
00119 }

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

Destroys srp.

Destroys srp.

Definition at line 125 of file srp_bodies.hh.

00126 {
00127 }


Member Function Documentation

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

Returns the pointer.

Returns the pointer.

Returns:
The contained pointer.

Definition at line 134 of file srp_bodies.hh.

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

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

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

Returns dereferenced pointer.

Dereferences the pointer.

Returns:
The dereferenced pointer.

Definition at line 146 of file srp_bodies.hh.

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

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

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

Assigns a pointer.

Assigns pointer.

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

Definition at line 159 of file srp_bodies.hh.

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

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

template<typename T>
template<typename U>
srp< T > & lestes::std::srp< 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 srp after the assignment.

Definition at line 173 of file srp_bodies.hh.

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

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

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

Assigns srp of the same type.

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

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

Definition at line 186 of file srp_bodies.hh.

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

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

template<typename T>
template<typename U>
srp< T > & lestes::std::srp< 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 srp after assignment.

Definition at line 214 of file srp_bodies.hh.

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

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

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

Assigns srp.

Assigns srp.

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

Definition at line 200 of file srp_bodies.hh.

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

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

template<typename T>
lestes::std::srp< 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 srp_bodies.hh.

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

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

template<typename T>
bool lestes::std::srp< 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 srp_bodies.hh.

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

00249 {
00250         return !pointer_get();
00251 }

template<typename T>
bool lestes::std::srp< 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 srp_bodies.hh.

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

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

template<typename T>
template<typename U>
bool lestes::std::srp< 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 srp_bodies.hh.

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

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

template<typename T>
bool lestes::std::srp< 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 srp_bodies.hh.

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

00281 {
00282 #ifdef LESTES_STRICT_CHECKING
00283         // test whether really comparing with NULL
00284         lassert(!a_pointer);
00285 #endif
00286         return !pointer_get();
00287 }

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

Compares to ptr.

Compares to ptr.

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

Definition at line 308 of file srp_bodies.hh.

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

00309 {
00310         return pointer_get() == other.pointer_get();
00311 }

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

Compares to srp.

Compares to srp.

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

Definition at line 296 of file srp_bodies.hh.

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

00297 {
00298         return pointer_get() == other.pointer_get();
00299 }

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

Compares to pointer.

Compares to pointer.

Returns:
false if both pointers are equal.

Definition at line 318 of file srp_bodies.hh.

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

00319 {
00320         return pointer_get() != a_pointer;
00321 }

template<typename T>
template<typename U>
bool lestes::std::srp< 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 330 of file srp_bodies.hh.

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

00331 {
00332         return pointer_get() != a_pointer;
00333 }

template<typename T>
bool lestes::std::srp< 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 340 of file srp_bodies.hh.

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

00341 {
00342 #ifdef LESTES_STRICT_CHECKING
00343         // test whether really comparing with NULL
00344         lassert(!a_pointer);
00345 #endif
00346         return pointer_get();
00347 }

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

Compares to ptr.

Compares to ptr.

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

Definition at line 368 of file srp_bodies.hh.

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

00369 {
00370         return pointer_get() != other.pointer_get();
00371 }

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

Compares to srp.

Compares to srp.

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

Definition at line 356 of file srp_bodies.hh.

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

00357 {
00358         return pointer_get() != other.pointer_get();
00359 }

template<typename T>
template<typename U>
ptr< U > lestes::std::srp< 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 srp pointer.

Definition at line 384 of file srp_bodies.hh.

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

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

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

Returns the pointer.

Returns the pointer.

Returns:
The contained pointer.

Reimplemented from lestes::std::mem::simple_pointer.

Definition at line 398 of file srp_bodies.hh.

Referenced by lestes::std::srp< T >::dncast(), lestes::std::srp< T >::operator *(), lestes::std::srp< T >::operator condition *(), lestes::std::srp< T >::operator!(), lestes::std::srp< T >::operator!=(), lestes::std::ptr< T >::operator!=(), lestes::std::srp< T >::operator->(), lestes::std::srp< 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(), and lestes::std::srp< T >::srp().

00399 {
00400         return static_cast<T *>(simple_pointer::pointer_get());
00401 }

template<typename T>
bool lestes::std::srp< T >::operator< ( const srp< 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 408 of file srp_bodies.hh.

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

00409 {
00410         return pointer_get() < b.pointer_get();
00411 }

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

Sets the pointer.

Sets the pointer.

Parameters:
a_pointer The pointer to set.

Definition at line 418 of file srp_bodies.hh.

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

00419 {
00420         simple_pointer::pointer_set(a_pointer);
00421 }


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