Util--  1.1
Public Types | Public Member Functions | List of all members
utilmm::smart::pointer< Manager > Class Template Reference

Generic smart pointer. More...

#include <utilmm/smart/pointer.hh>

Public Types

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

Public Member Functions

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

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@l.nosp@m.aas..nosp@m.fr

Member Typedef Documentation

◆ base_type

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

◆ pointer_type

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

◆ reference_type

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

Constructor & Destructor Documentation

◆ pointer() [1/2]

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 !!!!

◆ pointer() [2/2]

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

◆ ~pointer()

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

◆ null()

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!()

Referenced by utilmm::basic_symbol< CharT, Traits, Alloc >::empty(), and utilmm::hash< smart::pointer< Manager > >::operator()().

◆ 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()

◆ operator!=()

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==

◆ 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->()

◆ 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*()

◆ 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

◆ operator==()

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!=

◆ reset()

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.

◆ swap()

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.


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

Generated on Mon Sep 24 2018 17:06:40 for Util-- by doxygen 1.8.13
SourceForge.net Project Page