CMS 3D CMS Logo

Public Member Functions | Private Attributes

ProxyBase< T, Cloner > Class Template Reference

#include <ProxyBase.h>

Inheritance diagram for ProxyBase< T, Cloner >:
reco::GhostTrackState reco::TransientTrack TrajectoryStateOnSurface VertexState

List of all members.

Public Member Functions

void check () const
const Tdata () const
void destroy ()
bool isValid () const
ProxyBaseoperator= (const ProxyBase &other)
 ProxyBase ()
 ProxyBase (T *p)
 ProxyBase (const ProxyBase &other)
int references () const
TsharedData ()
void swap (ProxyBase &other)
TunsharedData ()
virtual ~ProxyBase ()

Private Attributes

TtheData

Detailed Description

template<class T, class Cloner>
class ProxyBase< T, Cloner >

A base class for reference counting proxies. The class to which this one is proxy must inherit from ReferenceCounted. A ProxyBase has value semantics, in contrast to ReferenceCountingPointer, which has pointer semantics. The Proxy class inheriting from ProxyBase must duplicate the part of the interface of the reference counted class that it whiches to expose.

Definition at line 17 of file ProxyBase.h.


Constructor & Destructor Documentation

template<class T, class Cloner>
ProxyBase< T, Cloner >::ProxyBase ( ) [inline]

Definition at line 20 of file ProxyBase.h.

: theData(0) {}
template<class T, class Cloner>
ProxyBase< T, Cloner >::ProxyBase ( T p) [inline]

Definition at line 22 of file ProxyBase.h.

References ProxyBase< T, Cloner >::theData.

: theData(p) {if (theData) theData->addReference();}
template<class T, class Cloner>
ProxyBase< T, Cloner >::ProxyBase ( const ProxyBase< T, Cloner > &  other) [inline]

Definition at line 24 of file ProxyBase.h.

References ProxyBase< T, Cloner >::theData.

                                     {
    theData = other.theData;
    if (theData) theData->addReference();
  }
template<class T, class Cloner>
virtual ProxyBase< T, Cloner >::~ProxyBase ( ) [inline, virtual]

Definition at line 29 of file ProxyBase.h.

References ProxyBase< T, Cloner >::destroy().

                       { 
    destroy();
  }

Member Function Documentation

template<class T, class Cloner>
void ProxyBase< T, Cloner >::check ( void  ) const [inline]

Definition at line 80 of file ProxyBase.h.

References ProxyBase< T, Cloner >::theData.

Referenced by ProxyBase< T, Cloner >::data(), ProxyBase< T, Cloner >::sharedData(), and ProxyBase< T, Cloner >::unsharedData().

                     {
    if (theData == 0)
      throw TrajectoryStateException("Error: uninitialized ProxyBase used");
  }
template<class T, class Cloner>
const T& ProxyBase< T, Cloner >::data ( ) const [inline]

Definition at line 64 of file ProxyBase.h.

References ProxyBase< T, Cloner >::check(), and ProxyBase< T, Cloner >::theData.

Referenced by reco::TransientTrack::basicTransientTrack(), reco::GhostTrackState::cartesianCovariance(), reco::GhostTrackState::cartesianError(), TrajectoryStateOnSurface::cartesianError(), reco::TransientTrack::charge(), TrajectoryStateOnSurface::charge(), VertexState::components(), TrajectoryStateOnSurface::components(), TrajectoryStateOnSurface::curvilinearError(), VertexState::error(), reco::TransientTrack::field(), TrajectoryStateOnSurface::freeState(), TrajectoryStateOnSurface::globalDirection(), TrajectoryStateOnSurface::globalMomentum(), TrajectoryStateOnSurface::globalParameters(), reco::GhostTrackState::globalPosition(), TrajectoryStateOnSurface::globalPosition(), TrajectoryStateOnSurface::hasError(), reco::TransientTrack::impactPointState(), reco::TransientTrack::impactPointStateAvailable(), reco::TransientTrack::impactPointTSCP(), reco::TransientTrack::initialFreeState(), reco::TransientTrack::innermostMeasurementState(), reco::GhostTrackState::isTrack(), TrajectoryStateOnSurface::isValid(), VertexState::isValid(), reco::GhostTrackState::isValid(), reco::GhostTrackState::isVertex(), reco::GhostTrackState::lambda(), TrajectoryStateOnSurface::localDirection(), TrajectoryStateOnSurface::localError(), TrajectoryStateOnSurface::localMomentum(), TrajectoryStateOnSurface::localParameters(), TrajectoryStateOnSurface::localPosition(), TrajectoryStateOnSurface::magneticField(), reco::TransientTrack::operator<(), reco::TransientTrack::operator==(), reco::TransientTrack::outermostMeasurementState(), VertexState::position(), TrajectoryStateOnSurface::signedInverseMomentum(), reco::TransientTrack::stateAtBeamLine(), reco::TransientTrack::stateOnSurface(), TrajectoryStateOnSurface::surface(), TrajectoryStateOnSurface::surfaceSide(), reco::GhostTrackState::track(), reco::TransientTrack::track(), reco::TransientTrack::trackBaseRef(), reco::TransientTrack::trajectoryStateClosestToPoint(), TrajectoryStateOnSurface::transverseCurvature(), reco::GhostTrackState::tsos(), TrajectoryStateOnSurface::update(), reco::GhostTrackState::vertexStateOnGhostTrack(), reco::GhostTrackState::vertexStateOnMeasurement(), VertexState::weight(), TrajectoryStateOnSurface::weight(), reco::GhostTrackState::weight(), VertexState::weightInMixture(), and VertexState::weightTimesPosition().

{ check(); return *theData;}
template<class T, class Cloner>
void ProxyBase< T, Cloner >::destroy ( ) [inline]
template<class T, class Cloner>
bool ProxyBase< T, Cloner >::isValid ( void  ) const [inline]
template<class T, class Cloner>
ProxyBase& ProxyBase< T, Cloner >::operator= ( const ProxyBase< T, Cloner > &  other) [inline]

Definition at line 33 of file ProxyBase.h.

References ProxyBase< T, Cloner >::destroy(), and ProxyBase< T, Cloner >::theData.

                                                {
    if ( theData != other.theData) { 
      destroy();
      theData = other.theData;
      if (theData) theData->addReference();
    }
    return *this;
  }
template<class T, class Cloner>
int ProxyBase< T, Cloner >::references ( ) const [inline]

Definition at line 87 of file ProxyBase.h.

References ProxyBase< T, Cloner >::theData.

Referenced by ProxyBase< T, Cloner >::unsharedData().

{return theData->references();}  
template<class T, class Cloner>
T& ProxyBase< T, Cloner >::sharedData ( ) [inline]
template<class T, class Cloner>
void ProxyBase< T, Cloner >::swap ( ProxyBase< T, Cloner > &  other) [inline]

Definition at line 43 of file ProxyBase.h.

References ProxyBase< T, Cloner >::theData.

Referenced by TrajectoryStateOnSurface::swap(), and swap().

                              {
    std::swap(theData,other.theData);
  }
template<class T, class Cloner>
T& ProxyBase< T, Cloner >::unsharedData ( ) [inline]

Member Data Documentation

template<class T, class Cloner>
T* ProxyBase< T, Cloner >::theData [private]