BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
Event/DecayChain/include/DecayChain/Element/ReferenceHolderBase.h
Go to the documentation of this file.
1#ifndef DCHAIN_REFERENCEHOLDERBASE_H
2#define DCHAIN_REFERENCEHOLDERBASE_H
3// -*- C++ -*-
4//
5// Package: DChain
6// Module: ReferenceHolderBase
7//
8// Description: Base implementation of smart pointer for classes that inherit from
9// ReferenceCount
10//
11// Usage:
12// ReferenceHolderBase() - default constructor
13// ~ReferenceHolderBase() - destructor
14//
15// Author: Simon Patton
16// Created: Fri May 17 08:01:51 EDT 1996
17// $Id: ReferenceHolderBase.h,v 1.1.1.1 2009/03/03 06:06:56 maqm Exp $
18//
19// Revision history
20//
21// $Log: ReferenceHolderBase.h,v $
22// Revision 1.1.1.1 2009/03/03 06:06:56 maqm
23// first import of DecayChain
24//
25// Revision 1.1 2006/01/11 20:28:10 cdj
26// massive class renaming, addition of [] for selection and unit tests
27//
28// Revision 1.1 2003/05/15 19:56:02 cdj
29// revamped memory handling so always use a ReferenceHolder to deal with the reference counting
30//
31//
32
33// system include files
34
35// user include files
36
37// forward declarations
38namespace dchain {
39 template <class TPtr, class TRef> class ReferenceHolderBase {
40 public:
41 // Constructors and destructor
42 ReferenceHolderBase() : m_ref( 0 ) {}
43 ReferenceHolderBase( TPtr iRef ) : m_ref( iRef ) {
44 if ( 0 != m_ref ) { m_ref->addLink(); }
45 }
47 if ( 0 != m_ref ) { m_ref->dropLink(); }
48 }
49
51 : m_ref( iOther.m_ref ) {
52 if ( 0 != m_ref ) { m_ref->addLink(); }
53 }
54
55 // assignment operator(s)
57 if ( 0 != iRHS.m_ref ) { iRHS.m_ref->addLink(); }
58 if ( 0 != m_ref ) { m_ref->dropLink(); }
59 m_ref = iRHS.m_ref;
60 return *this;
61 }
62
63 // const member functions
64 TPtr operator->() const { return m_ref; }
65
66 TRef operator*() const { return *m_ref; }
67
68 TPtr pointer() const { return m_ref; }
69
70 private:
71 // data members
72 TPtr m_ref;
73 };
74
75 // inline function definitions
76
77 //
78 // constructors and destructor
79 //
80
81 //
82 // member functions
83 //
84
85} // namespace dchain
86#endif // DCHAIN_REFERENCEHOLDERBASE_H
ReferenceHolderBase(const ReferenceHolderBase< TPtr, TRef > &iOther)
const ReferenceHolderBase & operator=(const ReferenceHolderBase< TPtr, TRef > &iRHS)