ReferenceCounting< ReferencedClass > Class Template Reference

#include <ReferenceCounting.hpp>

Collaboration diagram for ReferenceCounting< ReferencedClass >:

Collaboration graph
[legend]

List of all members.

Public Member Functions

const size_t & numberOfReferences () const
 Access to the number of references.
const ReferencedClassoperator-> () const
const ReferencedClassoperator* () const
ReferencedClassoperator-> ()
ReferencedClassoperator* ()
 operator ReferencedClass * ()
 Implicit cast to ReferencedClass*.
 operator const ReferencedClass * () const
 Implicit cast to ReferencedClass*.
std::string typeName () const
bool operator== (const ReferencedClass *ref) const
bool operator!= (const ReferencedClass *ref) const
bool operator== (const ReferenceCounting< ReferencedClass > &rc) const
bool operator!= (const ReferenceCounting< ReferencedClass > &rc) const
bool operator== (const ConstReferenceCounting< ReferencedClass > &rc) const
bool operator!= (const ConstReferenceCounting< ReferencedClass > &rc) const
const ReferenceCountingoperator= (ReferencedClass *ref)
 operator =
const ReferenceCountingoperator= (const ReferenceCounting< ReferencedClass > &O)
 operator =
 ReferenceCounting (const ReferenceCounting< ReferencedClass > &O)
 Copy constructor.
 ReferenceCounting (ReferencedClass *ref)
 Address constuctor.
 ReferenceCounting ()
 default constructor
 ~ReferenceCounting ()
 Destructor.

Private Member Functions

void eraseData ()
 destroys the datas.

Private Attributes

ReferenceCountingCenterRCC
 The reference counting center.
ReferencedClass__ref
 The referenced address.

Friends

class ConstReferenceCounting< ReferencedClass >
 the class ConstReferenceCounting is a friend.
class ReferenceCountingCenter


Detailed Description

template<typename ReferencedClass>
class ReferenceCounting< ReferencedClass >

Definition at line 339 of file ReferenceCounting.hpp.


Constructor & Destructor Documentation

template<typename ReferencedClass>
ReferenceCounting< ReferencedClass >::ReferenceCounting ( const ReferenceCounting< ReferencedClass > &  O  )  [inline]

Copy constructor.

Definition at line 512 of file ReferenceCounting.hpp.

00513     : RCC(ReferenceCountingCenter::instance()),
00514       __ref(O.__ref)
00515   {
00516 #ifndef NDEBUG
00517     fflog(4) << __ref << ':' << numberOfReferences()
00518              << ": create copy ReferenceCounting on "
00519              << typeid(__ref).name() << '\n';
00520 #endif // NDEBUG
00521     RCC.addReference(*this);
00522   }

template<typename ReferencedClass>
ReferenceCounting< ReferencedClass >::ReferenceCounting ( ReferencedClass ref  )  [inline]

Address constuctor.

Definition at line 525 of file ReferenceCounting.hpp.

00526     : RCC(ReferenceCountingCenter::instance()),
00527       __ref(ref)
00528   {
00529 #ifndef NDEBUG
00530     fflog(4) << __ref << ':' << numberOfReferences() << ": create ReferenceCounting on "
00531              << typeid(__ref).name() << '\n';
00532 #endif // NDEBUG
00533     RCC.addReference(*this);
00534   }

template<typename ReferencedClass>
ReferenceCounting< ReferencedClass >::ReferenceCounting (  )  [inline]

default constructor

Definition at line 537 of file ReferenceCounting.hpp.

00538     : RCC(ReferenceCountingCenter::instance()),
00539       __ref(0)
00540   {
00541 #ifndef NDEBUG
00542     fflog(4) << __ref << ':' << numberOfReferences() << ": create ReferenceCounting on "
00543              << typeid(__ref).name() << '\n';
00544 #endif // NDEBUG
00545     RCC.addReference(*this);
00546   }

template<typename ReferencedClass>
ReferenceCounting< ReferencedClass >::~ReferenceCounting (  )  [inline]

Destructor.

Definition at line 549 of file ReferenceCounting.hpp.

00550   {
00551 #ifndef NDEBUG
00552     fflog(4)
00553       << __ref << ':' << numberOfReferences() << ": remove ReferenceCounting on "
00554       << typeid(__ref).name() << '\n';
00555 #endif // NDEBUG
00556     RCC.removeReference(*this);
00557   }


Member Function Documentation

template<typename ReferencedClass>
void ReferenceCounting< ReferencedClass >::eraseData (  )  [inline, private]

destroys the datas.

Definition at line 354 of file ReferenceCounting.hpp.

00355   {
00356     delete __ref;
00357   }

template<typename ReferencedClass>
const size_t& ReferenceCounting< ReferencedClass >::numberOfReferences (  )  const [inline]

Access to the number of references.

Definition at line 362 of file ReferenceCounting.hpp.

Referenced by ReferenceCounting< Undefined >::operator=(), ReferenceCounting< Undefined >::ReferenceCounting(), and ReferenceCounting< Undefined >::~ReferenceCounting().

00363   {
00364     return RCC.numberOfReferences(*this);
00365   }

template<typename ReferencedClass>
const ReferencedClass* ReferenceCounting< ReferencedClass >::operator-> (  )  const [inline]

read-only access to the referenced value

Returns:
the referenced value

Definition at line 373 of file ReferenceCounting.hpp.

00374   {
00375     ASSERT(__ref != 0);
00376     return __ref;
00377   }

template<typename ReferencedClass>
const ReferencedClass& ReferenceCounting< ReferencedClass >::operator* (  )  const [inline]

read-only access to the referenced value

Returns:
the referenced value

Definition at line 385 of file ReferenceCounting.hpp.

00386   {
00387     ASSERT(__ref != 0);
00388     return *__ref;
00389   }

template<typename ReferencedClass>
ReferencedClass* ReferenceCounting< ReferencedClass >::operator-> (  )  [inline]

access to the referenced value

Returns:
the referenced value

Definition at line 397 of file ReferenceCounting.hpp.

00398   {
00399     ASSERT(__ref != 0);
00400     return __ref;
00401   }

template<typename ReferencedClass>
ReferencedClass& ReferenceCounting< ReferencedClass >::operator* (  )  [inline]

access to the referenced value

Returns:
the referenced value

Definition at line 409 of file ReferenceCounting.hpp.

00410   {
00411     ASSERT(__ref != 0);
00412     return *__ref;
00413   }

template<typename ReferencedClass>
ReferenceCounting< ReferencedClass >::operator ReferencedClass * (  )  [inline]

Implicit cast to ReferencedClass*.

Definition at line 416 of file ReferenceCounting.hpp.

00417   {
00418     return __ref;
00419   }

template<typename ReferencedClass>
ReferenceCounting< ReferencedClass >::operator const ReferencedClass * (  )  const [inline]

Implicit cast to ReferencedClass*.

Definition at line 422 of file ReferenceCounting.hpp.

00423   {
00424     return __ref;
00425   }

template<typename ReferencedClass>
std::string ReferenceCounting< ReferencedClass >::typeName (  )  const [inline]

Definition at line 428 of file ReferenceCounting.hpp.

Referenced by SolverExpression::__solveLegendre().

00429   {
00430     return typeid(__ref).name();
00431   }

template<typename ReferencedClass>
bool ReferenceCounting< ReferencedClass >::operator== ( const ReferencedClass ref  )  const [inline]

Definition at line 434 of file ReferenceCounting.hpp.

00435   {
00436     return (__ref == ref);
00437   }

template<typename ReferencedClass>
bool ReferenceCounting< ReferencedClass >::operator!= ( const ReferencedClass ref  )  const [inline]

Definition at line 439 of file ReferenceCounting.hpp.

00440   {
00441     return (__ref != ref);
00442   }

template<typename ReferencedClass>
bool ReferenceCounting< ReferencedClass >::operator== ( const ReferenceCounting< ReferencedClass > &  rc  )  const [inline]

Definition at line 444 of file ReferenceCounting.hpp.

00445   {
00446     return (__ref == rc.__ref);
00447   }

template<typename ReferencedClass>
bool ReferenceCounting< ReferencedClass >::operator!= ( const ReferenceCounting< ReferencedClass > &  rc  )  const [inline]

Definition at line 449 of file ReferenceCounting.hpp.

00450   {
00451     return (__ref != rc.__ref);
00452   }

template<typename ReferencedClass>
bool ReferenceCounting< ReferencedClass >::operator== ( const ConstReferenceCounting< ReferencedClass > &  rc  )  const [inline]

Definition at line 454 of file ReferenceCounting.hpp.

00455   {
00456     return (__ref == rc.__ref);
00457   }

template<typename ReferencedClass>
bool ReferenceCounting< ReferencedClass >::operator!= ( const ConstReferenceCounting< ReferencedClass > &  rc  )  const [inline]

Definition at line 459 of file ReferenceCounting.hpp.

00460   {
00461     return (__ref != rc.__ref);
00462   }

template<typename ReferencedClass>
const ReferenceCounting& ReferenceCounting< ReferencedClass >::operator= ( ReferencedClass ref  )  [inline]

operator =

Definition at line 465 of file ReferenceCounting.hpp.

00466   {
00467 #ifndef NDEBUG
00468     fflog(4) << __ref << ':' << numberOfReferences()
00469              << ": remove operator=(ReferencedClass*) ReferenceCounting on "
00470              << typeid(__ref).name() << '\n';
00471 #endif // NDEBUG
00472     RCC.removeReference(*this);
00473 
00474     __ref = ref;
00475 
00476 #ifndef NDEBUG
00477     fflog(4) << __ref << ':' << numberOfReferences()
00478              << ": create operator=(ReferencedClass*) ReferenceCounting on "
00479              << typeid(__ref).name() << '\n';
00480 #endif // NDEBUG
00481     RCC.addReference(*this);
00482 
00483     return *this;
00484   }

template<typename ReferencedClass>
const ReferenceCounting& ReferenceCounting< ReferencedClass >::operator= ( const ReferenceCounting< ReferencedClass > &  O  )  [inline]

operator =

Definition at line 488 of file ReferenceCounting.hpp.

00489   {
00490 #ifndef NDEBUG
00491     fflog(4)
00492       << __ref << ':' << numberOfReferences()
00493       << ": remove operator=(ReferenceCounting<T>&) ReferenceCounting on "
00494       << typeid(__ref).name() << '\n';
00495 #endif // NDEBUG
00496     RCC.removeReference(*this);
00497 
00498     __ref = O.__ref;
00499 
00500 #ifndef NDEBUG
00501     fflog(4)
00502       << __ref << ':' << numberOfReferences()
00503       << ": create operator=(ReferenceCounting<T>&) ReferenceCounting on "
00504       << typeid(__ref).name() << '\n';
00505 #endif // NDEBUG
00506     RCC.addReference(*this);
00507 
00508     return *this;
00509   }


Friends And Related Function Documentation

template<typename ReferencedClass>
friend class ConstReferenceCounting< ReferencedClass > [friend]

the class ConstReferenceCounting is a friend.

Definition at line 343 of file ReferenceCounting.hpp.

template<typename ReferencedClass>
friend class ReferenceCountingCenter [friend]

Definition at line 345 of file ReferenceCounting.hpp.


Member Data Documentation

template<typename ReferencedClass>
ReferenceCountingCenter& ReferenceCounting< ReferencedClass >::RCC [private]

template<typename ReferencedClass>
ReferencedClass* ReferenceCounting< ReferencedClass >::__ref [private]


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

Generated on Wed Nov 19 00:12:43 2008 for FreeFEM3D (aka ff3d) by  doxygen 1.5.6