// @(#)root/base:$Id$
// Author: Fons Rademakers   04/08/95

/*************************************************************************
 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#ifndef ROOT_TRefCnt
#define ROOT_TRefCnt


//////////////////////////////////////////////////////////////////////////
//                                                                      //
//  TRefCnt                                                             //
//                                                                      //
//  Base class for reference counted objects.                           //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#ifndef ROOT_Rtypes
#include "Rtypes.h"
#endif


class TRefCnt {

protected:
   UInt_t  fRefs;      // (1 less than) number of references

public:
   enum EReferenceFlag { kStaticInit };

   TRefCnt(Int_t initRef = 0) : fRefs((UInt_t)initRef-1) { }
   TRefCnt(EReferenceFlag);
   virtual ~TRefCnt() { }
   UInt_t   References() const      { return fRefs+1; }
   void     SetRefCount(UInt_t r)   { fRefs = r-1; }
   void     AddReference()          { fRefs++; }
   UInt_t   RemoveReference()       { return fRefs--; }
};

#endif
 TRefCnt.h:1
 TRefCnt.h:2
 TRefCnt.h:3
 TRefCnt.h:4
 TRefCnt.h:5
 TRefCnt.h:6
 TRefCnt.h:7
 TRefCnt.h:8
 TRefCnt.h:9
 TRefCnt.h:10
 TRefCnt.h:11
 TRefCnt.h:12
 TRefCnt.h:13
 TRefCnt.h:14
 TRefCnt.h:15
 TRefCnt.h:16
 TRefCnt.h:17
 TRefCnt.h:18
 TRefCnt.h:19
 TRefCnt.h:20
 TRefCnt.h:21
 TRefCnt.h:22
 TRefCnt.h:23
 TRefCnt.h:24
 TRefCnt.h:25
 TRefCnt.h:26
 TRefCnt.h:27
 TRefCnt.h:28
 TRefCnt.h:29
 TRefCnt.h:30
 TRefCnt.h:31
 TRefCnt.h:32
 TRefCnt.h:33
 TRefCnt.h:34
 TRefCnt.h:35
 TRefCnt.h:36
 TRefCnt.h:37
 TRefCnt.h:38
 TRefCnt.h:39
 TRefCnt.h:40
 TRefCnt.h:41
 TRefCnt.h:42
 TRefCnt.h:43
 TRefCnt.h:44
 TRefCnt.h:45
 TRefCnt.h:46