library: libCore #include "TObjArray.h"

# TObjArray

class description - source file - inheritance tree (.pdf)

## class TObjArray : public TSeqCollection

| Inheritance Chart:
`TObject`
| <- | `TCollection`
| <- | `TSeqCollection`
| <- | `TObjArray` |
<- |
`TClonesArray` |

        protected:

          Bool_t BoundsOk(const char* where, Int_t at) const
           Int_t GetAbsLast() const
            void Init(Int_t s, Int_t lowerBound)
          Bool_t OutOfBoundsError(const char* where, Int_t i) const

        public:

                             TObjArray(Int_t s = TCollection::kInitCapacity, Int_t lowerBound = 0)
                             TObjArray(const TObjArray& a)
                     virtual ~TObjArray()
                virtual void Add(TObject* obj)
                virtual void AddAfter(const TObject* after, TObject* obj)
                virtual void AddAt(TObject* obj, Int_t idx)
                virtual void AddAtAndExpand(TObject* obj, Int_t idx)
               virtual Int_t AddAtFree(TObject* obj)
                virtual void AddBefore(const TObject* before, TObject* obj)
                virtual void AddFirst(TObject* obj)
                virtual void AddLast(TObject* obj)
            virtual TObject* After(const TObject* obj) const
            virtual TObject* At(Int_t idx) const
            virtual TObject* Before(const TObject* obj) const
               virtual Int_t BinarySearch(TObject* obj, Int_t upto = kMaxInt)
              static TClass* Class()
                virtual void Clear(Option_t* option = "")
                virtual void Compress()
                virtual void Delete(Option_t* option = "")
                virtual void Expand(Int_t newSize)
            virtual TObject* FindObject(const char* name) const
            virtual TObject* FindObject(const TObject* obj) const
            virtual TObject* First() const
               virtual Int_t GetEntries() const
                       Int_t GetEntriesFast() const
                       Int_t GetLast() const
           virtual TObject** GetObjectRef(const TObject* obj) const
               virtual Int_t IndexOf(const TObject* obj) const
             virtual TClass* IsA() const
              virtual Bool_t IsEmpty() const
            virtual TObject* Last() const
                       Int_t LowerBound() const
          virtual TIterator* MakeIterator(Bool_t dir = kIterForward) const
           virtual TObject*& operator[](Int_t i)
            virtual TObject* operator[](Int_t i) const
            virtual TObject* Remove(TObject* obj)
            virtual TObject* RemoveAt(Int_t idx)
                        void SetLast(Int_t last)
                virtual void ShowMembers(TMemberInspector& insp, char* parent)
                virtual void Sort(Int_t upto = kMaxInt)
                virtual void Streamer(TBuffer& b)
                        void StreamerNVirtual(TBuffer& b)
                    TObject* UncheckedAt(Int_t i) const

### Data Members

        protected:

          TObject** fCont        !Array contents
              Int_t fLowerBound  Lower bound of the array
              Int_t fLast        Last element in array containing an object

## Class Description

     TObjArray

     An array of TObjects. The array expands automatically when
     objects are added (shrinking can be done by hand using Expand(),
     how nice to have meaningful names -:)).
     Use operator[] to have "real" array behaviour.

/* */

TObjArray(Int_t s, Int_t lowerBound)

     Create an object array. Using s one can set the array size (default is
     kInitCapacity=16) and lowerBound can be used to set the array lowerbound
     index (default is 0).

TObjArray(const TObjArray &a) : TSeqCollection()

     Create a copy of TObjArray a. Note, does not copy the kIsOwner flag.

~TObjArray()

     Delete an array. Objects are not deleted unless the TObjArray is the
     owner (set via SetOwner()).

void AddFirst(TObject *obj)

     Add object in the first slot of the array. This will overwrite the
     first element that might have been there. To have insertion semantics
     use either a TList or a TOrdCollection.

void AddLast(TObject *obj)

     Add object in the next empty slot in the array. Expand the array
     if necessary.

void AddBefore(const TObject *before, TObject *obj)

     Add object in the slot before object before. If before=0 add object
     in the first slot. Note that this will overwrite any object that
     might have already been in this slot. For insertion semantics use
     either a TList or a TOrdCollection.

void AddAfter(const TObject *after, TObject *obj)

     Add object in the slot after object after. If after=0 add object in
     the last empty slot. Note that this will overwrite any object that
     might have already been in this slot. For insertion semantics use
     either a TList or a TOrdCollection.

void AddAtAndExpand(TObject *obj, Int_t idx)

     Add object at position idx. If idx is larger than the current size
     of the array, expand the array (double its size).

void AddAt(TObject *obj, Int_t idx)

     Add object at position ids. Give an error when idx is out of bounds
     (i.e. the array is not expanded).

Int_t AddAtFree(TObject *obj)

     Return the position of the new object.
     Find the first empty cell or AddLast if there is no empty cell

TObject* After(const TObject *obj) const

     Return the object after obj. Returns 0 if obj is last object.

TObject* Before(const TObject *obj) const

     Return the object before obj. Returns 0 if obj is first object.

void Clear(Option_t *)

     Remove all objects from the array. Does not delete the objects
     unless the TObjArray is the owner (set via SetOwner()).

void Compress()

     Remove empty slots from array.

void Delete(Option_t *)

     Remove all objects from the array AND delete all heap based objects.

void Expand(Int_t newSize)

     Expand or shrink the array to newSize elements.

TObject* FindObject(const char *name) const

     Find an object in this collection using its name. Requires a sequential
     scan till the object has been found. Returns 0 if object with specified
     name is not found.

TObject* FindObject(const TObject *iobj) const

     Find an object in this collection using the object's IsEqual()
     member function. Requires a sequential scan till the object has
     been found. Returns 0 if object is not found.
     Typically this function is overridden by a more efficient version
     in concrete collection classes (e.g. THashTable).

void Streamer(TBuffer &b)

     Stream all objects in the array to or from the I/O buffer.

TObject* First() const

     Return the object in the first slot.

TObject* Last() const

     Return the object in the last filled slot. Returns 0 if no entries.

Int_t GetEntries() const

     Return the number of objects in array (i.e. number of non-empty slots).
     Attention: use this method ONLY if you want to know the number of
     non-empty slots. This function loops over the complete array and
     is therefore very slow when applied in a loop. Most of the time you
     better use GetEntriesFast() (only in case when there are no empty slots).

Int_t GetAbsLast() const

     Return absolute index to last object in array. Returns -1 in case
     array is empty.

Int_t GetLast() const

     Return index of last object in array. Returns lowerBound-1 in case
     array is empty.

TObject** GetObjectRef(const TObject *obj) const

     Return address of pointer obj. If obj is 0 returns address of container.

Int_t IndexOf(const TObject *obj) const

     obj != 0 Return index of object in array.
              Returns lowerBound-1 in case array doesn't contain the obj.

     obj == 0 Return the index of the first empty slot.
              Returns lowerBound-1 in case array doesn't contain any empty slot.

void Init(Int_t s, Int_t lowerBound)

     Initialize a TObjArray.

TIterator* MakeIterator(Bool_t dir) const

     Returns an array iterator.

Bool_t OutOfBoundsError(const char *where, Int_t i) const

     Generate an out-of-bounds error. Always returns false.

TObject* RemoveAt(Int_t idx)

     Remove object at index idx.

TObject* Remove(TObject *obj)

     Remove object from array.

void SetLast(Int_t last)

     Set index of last object in array, effectively truncating the
     array. Use carefully since whenever last position has to be
     recalculated, e.g. after a Remove() or Sort() it will be reset
     to the last non-empty slot. If last is -2 this will force the
     recalculation of the last used slot.

void Sort(Int_t upto)

     If objects in array are sortable (i.e. IsSortable() returns true
     for all objects) then sort array.

Int_t BinarySearch(TObject *op, Int_t upto)

     Find object using a binary search. Array must first have been sorted.
     Search can be limited by setting upto to desired index.

### Inline Functions

                 Bool_t BoundsOk(const char* where, Int_t at) const
                  Int_t GetEntriesFast() const
                 Bool_t IsEmpty() const
                   void Add(TObject* obj)
               TObject* At(Int_t idx) const
               TObject* UncheckedAt(Int_t i) const
              TObject*& operator[](Int_t i)
               TObject* operator[](Int_t i) const
                  Int_t LowerBound() const
                TClass* Class()
                TClass* IsA() const
                   void ShowMembers(TMemberInspector& insp, char* parent)
                   void StreamerNVirtual(TBuffer& b)

Author: Fons Rademakers 11/09/95
Last update: root/cont:$Name: $:$Id: TObjArray.cxx,v 1.24 2005/06/13 16:48:01 pcanal Exp $
Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *