ROOT logo
// @(#)root/cont:$Id: TClonesArray.h 23348 2008-04-21 09:22:15Z brun $
// Author: Rene Brun   11/02/96

/*************************************************************************
 * 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_TClonesArray
#define ROOT_TClonesArray


//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TClonesArray                                                         //
//                                                                      //
// An array of clone TObjects. The array expands automatically when     //
// adding elements (shrinking can be done by hand).                     //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#ifndef ROOT_TObjArray
#include "TObjArray.h"
#endif

class TClass;


class TClonesArray : public TObjArray {

protected:
   TClass       *fClass;       //!Pointer to the class
   TObjArray    *fKeep;        //!Saved copies of pointers to objects

public:
   enum {
      kForgetBits     = BIT(0),   // Do not create branches for fBits, fUniqueID
      kNoSplit        = BIT(1),   // Array not split by TTree::Branch
      kBypassStreamer = BIT(12)   // Class Streamer not called (default)
   };

   TClonesArray();
   TClonesArray(const char *classname, Int_t size = 1000, Bool_t call_dtor = kFALSE);
   TClonesArray(const TClass *cl, Int_t size = 1000, Bool_t call_dtor = kFALSE);
   TClonesArray(const TClonesArray& tc);          
   virtual         ~TClonesArray();
   TClonesArray& operator=(const TClonesArray& tc);  
   virtual void     Compress();
   virtual void     Clear(Option_t *option="");
   virtual void     Delete(Option_t *option="");
   virtual void     Expand(Int_t newSize);
   virtual void     ExpandCreate(Int_t n);
   virtual void     ExpandCreateFast(Int_t n);
   TClass          *GetClass() const { return fClass; }
   virtual void     SetOwner(Bool_t enable = kTRUE);

   void             AddFirst(TObject *) { MayNotUse("AddFirst"); }
   void             AddLast(TObject *) { MayNotUse("AddLast"); }
   void             AddAt(TObject *, Int_t) { MayNotUse("AddAt"); }
   void             AddAtAndExpand(TObject *, Int_t) { MayNotUse("AddAtAndExpand"); }
   Int_t            AddAtFree(TObject *) { MayNotUse("AddAtFree"); return 0; }
   void             AddAfter(const TObject *, TObject *) { MayNotUse("AddAfter"); }
   void             AddBefore(const TObject *, TObject *) { MayNotUse("AddBefore"); }
   void             BypassStreamer(Bool_t bypass=kTRUE);
   Bool_t           CanBypassStreamer() const { return TestBit(kBypassStreamer); }
   void             SetClass(const char *classname,Int_t size=1000);
   void             SetClass(const TClass *cl,Int_t size=1000);
   
   virtual TObject *RemoveAt(Int_t idx);
   virtual TObject *Remove(TObject *obj);
   virtual void     Sort(Int_t upto = kMaxInt);

   TObject         *New(Int_t idx);
   TObject         *AddrAt(Int_t idx);
   TObject         *&operator[](Int_t idx);
   TObject         *operator[](Int_t idx) const;

   ClassDef(TClonesArray,4)  //An array of clone objects
};

inline TObject *TClonesArray::AddrAt(Int_t idx)
{
   return operator[](idx);
}

#endif
 TClonesArray.h:1
 TClonesArray.h:2
 TClonesArray.h:3
 TClonesArray.h:4
 TClonesArray.h:5
 TClonesArray.h:6
 TClonesArray.h:7
 TClonesArray.h:8
 TClonesArray.h:9
 TClonesArray.h:10
 TClonesArray.h:11
 TClonesArray.h:12
 TClonesArray.h:13
 TClonesArray.h:14
 TClonesArray.h:15
 TClonesArray.h:16
 TClonesArray.h:17
 TClonesArray.h:18
 TClonesArray.h:19
 TClonesArray.h:20
 TClonesArray.h:21
 TClonesArray.h:22
 TClonesArray.h:23
 TClonesArray.h:24
 TClonesArray.h:25
 TClonesArray.h:26
 TClonesArray.h:27
 TClonesArray.h:28
 TClonesArray.h:29
 TClonesArray.h:30
 TClonesArray.h:31
 TClonesArray.h:32
 TClonesArray.h:33
 TClonesArray.h:34
 TClonesArray.h:35
 TClonesArray.h:36
 TClonesArray.h:37
 TClonesArray.h:38
 TClonesArray.h:39
 TClonesArray.h:40
 TClonesArray.h:41
 TClonesArray.h:42
 TClonesArray.h:43
 TClonesArray.h:44
 TClonesArray.h:45
 TClonesArray.h:46
 TClonesArray.h:47
 TClonesArray.h:48
 TClonesArray.h:49
 TClonesArray.h:50
 TClonesArray.h:51
 TClonesArray.h:52
 TClonesArray.h:53
 TClonesArray.h:54
 TClonesArray.h:55
 TClonesArray.h:56
 TClonesArray.h:57
 TClonesArray.h:58
 TClonesArray.h:59
 TClonesArray.h:60
 TClonesArray.h:61
 TClonesArray.h:62
 TClonesArray.h:63
 TClonesArray.h:64
 TClonesArray.h:65
 TClonesArray.h:66
 TClonesArray.h:67
 TClonesArray.h:68
 TClonesArray.h:69
 TClonesArray.h:70
 TClonesArray.h:71
 TClonesArray.h:72
 TClonesArray.h:73
 TClonesArray.h:74
 TClonesArray.h:75
 TClonesArray.h:76
 TClonesArray.h:77
 TClonesArray.h:78
 TClonesArray.h:79
 TClonesArray.h:80
 TClonesArray.h:81
 TClonesArray.h:82
 TClonesArray.h:83
 TClonesArray.h:84
 TClonesArray.h:85
 TClonesArray.h:86
 TClonesArray.h:87
 TClonesArray.h:88
 TClonesArray.h:89