Public Types | Public Member Functions | Private Attributes
utilmm::smart::pointer< Manager > Class Template Reference

Generic smart pointer. More...

#include <pointer.hh>

List of all members.

Public Types

typedef Manager::base_type base_type
 Pointed type.
typedef base_typepointer_type
 basic pointer type
typedef base_typereference_type
 Basic reference type.

Public Member Functions

bool null () const
 Check if null.
bool operator! () const
 Check if null.
bool operator!= (pointer const &other) const
 Difference test.
reference_type operator* () const
 dereference operator
pointer_type operator-> () const
 Access operator.
pointeroperator= (pointer const &other)
 Assignement operator.
bool operator== (pointer const &other) const
 Equality test.
 pointer (pointer_type ptr=0)
 Constructor.
 pointer (pointer const &other)
 Copy constructor.
void reset (pointer_type ptr=0)
 Checnging pointed value.
void swap (pointer &other)
 pointed cell exchange
 ~pointer ()
 Destructor.

Private Attributes

singleton::use< Manager > manager
Manager::mem_cell pointee

Detailed Description

template<class Manager>
class utilmm::smart::pointer< Manager >

Generic smart pointer.

This class is a generic definition of smart pointer. It uses a memory manager to manage the pointers.

Parameters:
ManagerThe memory manager
Note:
Manager is used as a singleton using the s
Author:
Frédéric Py <fpy@laas.fr>

Definition at line 52 of file pointer.hh.


Member Typedef Documentation

template<class Manager>
typedef Manager::base_type utilmm::smart::pointer< Manager >::base_type

Pointed type.

This is the type of the element pointed by this pointer

Definition at line 61 of file pointer.hh.

template<class Manager>
typedef base_type* utilmm::smart::pointer< Manager >::pointer_type

basic pointer type

This is the type of the classical C/C++ pointer for base_type

Definition at line 67 of file pointer.hh.

template<class Manager>
typedef base_type& utilmm::smart::pointer< Manager >::reference_type

Basic reference type.

This is the type of the classical C++ reference for base_type

Definition at line 73 of file pointer.hh.


Constructor & Destructor Documentation

template<class Manager>
utilmm::smart::pointer< Manager >::pointer ( pointer_type  ptr = 0) [explicit]

Constructor.

Parameters:
ptrThe basic pointer we want to manage

Create a new instance managing ptr

Warning:
ptr is now managed by the pointer manager. Its life time is controlled by this manager an user must not interfere with it (do not manipulate ptr changing its pointed value or deleting it !!!!
template<class Manager>
utilmm::smart::pointer< Manager >::pointer ( pointer< Manager > const &  other)

Copy constructor.

Parameters:
otherThe instance to copy.

Create a new instance pôinting to the same cell as other.

This will probably influence the life time of the pointed cell

template<class Manager>
utilmm::smart::pointer< Manager >::~pointer ( )

Destructor.

This destructor informs the manager that the smart pointer does not use enymore the stored pointer. It may have probably a strong influence on the pointed cell life time.


Member Function Documentation

template<class Manager>
bool utilmm::smart::pointer< Manager >::null ( ) const

Check if null.

Return values:
trueif current insatnce is pointing to nothing
falseelse
See also:
operator!()
template<class Manager>
bool utilmm::smart::pointer< Manager >::operator! ( ) const

Check if null.

Return values:
trueif current insatnce is pointing to nothing
falseelse
See also:
null()
template<class Manager>
bool utilmm::smart::pointer< Manager >::operator!= ( pointer< Manager > const &  other) const

Difference test.

Parameters:
otherThe instance to compare
Returns:
!operator==(other)
See also:
operator==
template<class Manager>
reference_type utilmm::smart::pointer< Manager >::operator* ( ) const

dereference operator

Returns:
A reference to the pointed cell
Exceptions:
utilmm::null_accessThis insatnce points to nothing
See also:
operator->()
template<class Manager>
pointer_type utilmm::smart::pointer< Manager >::operator-> ( ) const

Access operator.

Thsi operator gives direct access to the attributes of pointed value

Exceptions:
utilmm::null_accessThis insatnce points to nothing
See also:
operator*()
template<class Manager>
pointer& utilmm::smart::pointer< Manager >::operator= ( pointer< Manager > const &  other)

Assignement operator.

Parameters:
otherThe instance to assign

Change the value of current instance to a value pointing to the same cell as toher.

See also:
reset
template<class Manager>
bool utilmm::smart::pointer< Manager >::operator== ( pointer< Manager > const &  other) const

Equality test.

Parameters:
otherThe instance to compare
Return values:
trueIf current insatnce points to the samme cell as other
falseelse
See also:
operator!=
template<class Manager>
void utilmm::smart::pointer< Manager >::reset ( pointer_type  ptr = 0)

Checnging pointed value.

Parameters:
ptrThe new pointer to manage

This function release the old pointed value (ie it informa the manager that this instnace no more use the pointed value) and sets the new pointed value to ptr.

Warning:
ptr is now managed by the pointer manager. Its life time is controlled by this manager an user must not interfere with it (do not manipulate ptr changing its pointed value or deleting it !!!!
Note:
This function informs the manager that this insatnce does not use enymore the previously stored pointer. It may have probably a strong influence on the pointed cell life time.
template<class Manager>
void utilmm::smart::pointer< Manager >::swap ( pointer< Manager > &  other)

pointed cell exchange

Parameters:
otheranother instance

This function swaps the values of current instance and other.


Member Data Documentation

template<class Manager>
singleton::use<Manager> utilmm::smart::pointer< Manager >::manager [private]

Definition at line 54 of file pointer.hh.

template<class Manager>
Manager::mem_cell utilmm::smart::pointer< Manager >::pointee [private]

Definition at line 201 of file pointer.hh.


The documentation for this class was generated from the following file:


utilmm
Author(s): Sylvain Joyeux/sylvain.joyeux@m4x.org
autogenerated on Thu Jan 2 2014 11:38:32