library: libCore #include "TRefTable.h"

# TRefTable

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

## class TRefTable : public TObject

| Inheritance Chart:
`TObject`
| <- | `TRefTable` |

        public:

                            TRefTable()
                            TRefTable(TObject* owner, Int_t size)
                            TRefTable(const TRefTable&)
                    virtual ~TRefTable()
              virtual Int_t Add(Int_t uid)
             static TClass* Class()
               virtual void Clear(Option_t* = "")
              virtual Int_t Expand(Int_t newsize)
               virtual void FillBuffer(TBuffer& b)
                      Int_t GetN() const
                   TObject* GetOwner() const
                   TObject* GetParent(Int_t uid) const
                 TObjArray* GetParents() const
          static TRefTable* GetRefTable()
                      Int_t GetSize() const
                     UInt_t GetUID() const
            virtual TClass* IsA() const
             virtual Bool_t Notify()
                 TRefTable& operator=(const TRefTable&)
               virtual void ReadBuffer(TBuffer& b)
              virtual Int_t SetParent(const TObject* parent)
                static void SetRefTable(TRefTable* table)
               virtual void SetUID(UInt_t uid)
               virtual void ShowMembers(TMemberInspector& insp, char* parent)
               virtual void Streamer(TBuffer& b)
                       void StreamerNVirtual(TBuffer& b)

### Data Members

        protected:

                      Int_t fSize       allocated size of array fParentIDs
                      Int_t fN          current maximum number of IDs in array fParentIDs
                     Int_t* fParentIDs  [fSize] array of Parent IDs
                      Int_t fParentID   current parent ID in fParents (latest call to SetParent)
                     UInt_t fUID        !Current uid (set by TRef::GetObject)
                 TObjArray* fParents    array of Parent objects  (eg TTree branch) holding the referenced objects
                   TObject* fOwner      Object owning this TRefTable
          static TRefTable* fgRefTable  Pointer to current TRefTable

## Class Description

     TRefTable

     A TRefTable maintains the association between a referenced object
     and the parent object supporting this referenced object.
     The parent object is typically a branch of a TTree.

TRefTable()

     Default constructor for I/O

TRefTable(TObject *owner, Int_t size)

     Create a TRefTable with initial size

~TRefTable()

Int_t Add(Int_t uid)

     add a new uid to the table
     we add a new pair (uid,fparent) to the map
     This function is called by TObject::Streamer or TStreamerInfo::WriteBuffer

void Clear(Option_t * /*option*/)

     clear all entries in the table

Int_t Expand(Int_t newsize)

     expand fParentID to newsize

void FillBuffer(TBuffer &b)

     fill buffer b with the fN elements in fParentdIDs
     This function is called by TBranchRef::FillLeaves

TObject* GetParent(Int_t uid) const

     return object corresponding to uid

TRefTable* GetRefTable()

     static function returning the current TRefTable

Bool_t Notify()

     This function is called by TRef::Streamer or TStreamerInfo::ReadBuffer
     when reading a reference.
     This function, in turns, notifies the TRefTable owner for action.
     eg, when the owner is a TBranchRef, TBranchRef::Notify is called
     to read the branch containing the referenced object.

void ReadBuffer(TBuffer &b)

     fill buffer b with the fN elements in fParentdIDs
     This function is called by TBranchRef::ReadLeaves

Int_t SetParent(const TObject *parent)

     Set Current parent object
     The parent object is typically a branch of a Tree.
     This function is called by TBranchElement::Fill

void SetRefTable(TRefTable *table)

     static function setting the current TRefTable

### Inline Functions

                  Int_t GetSize() const
                  Int_t GetN() const
               TObject* GetOwner() const
             TObjArray* GetParents() const
                 UInt_t GetUID() const
                   void SetUID(UInt_t uid)
                TClass* Class()
                TClass* IsA() const
                   void ShowMembers(TMemberInspector& insp, char* parent)
                   void Streamer(TBuffer& b)
                   void StreamerNVirtual(TBuffer& b)
              TRefTable TRefTable(const TRefTable&)
             TRefTable& operator=(const TRefTable&)

Author: Rene Brun 28/09/2001
Last update: root/cont:$Name: $:$Id: TRefTable.cxx,v 1.3 2004/08/24 10:41:58 brun Exp $
Copyright (C) 1995-2004, Rene Brun and Fons Rademakers. *