// @(#)root/tree:$Name:  $:$Id: TChainElement.h,v 1.7 2005/03/10 17:57:04 rdm Exp $
// Author: Rene Brun   11/02/97

/*************************************************************************
 * 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_TChainElement
#define ROOT_TChainElement


//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TChainElement                                                        //
//                                                                      //
// Describes a component of a TChain.                                   //
//                                                                      //
//////////////////////////////////////////////////////////////////////////


#ifndef ROOT_TNamed
#include "TNamed.h"
#endif

class TChainElement : public TNamed {

protected:
    Int_t         fEntries;          //Number of entries in the tree of this chain element
    Int_t         fNPackets;         //Number of packets
    Int_t         fPacketSize;       //Number of events in one packet for parallel root
    Int_t         fStatus;           //branch status when used as a branch
    void         *fBaddress;         //!branch address when used as a branch
    TString       fBaddressClassName;//!Name of the class pointed to by fBaddress
    UInt_t        fBaddressType;     //!Type of the value pointed to by fBaddress
    Bool_t        fBaddressIsPtr;    //!True if the address is a pointer to an address
    char         *fPackets;          //!Packet descriptor string

public:
        TChainElement();
        TChainElement(const char *title, const char *filename);
        virtual ~TChainElement();
        virtual void     CreatePackets();
        virtual void    *GetBaddress() const {return fBaddress;}
        virtual const char*GetBaddressClassName() const { return fBaddressClassName; }
        virtual Bool_t   GetBaddressIsPtr() const { return fBaddressIsPtr; }
        virtual UInt_t   GetBaddressType() const { return fBaddressType; }
        virtual Int_t    GetEntries() const {return fEntries;}
        virtual char    *GetPackets() const {return fPackets;}
        virtual Int_t    GetPacketSize() const {return fPacketSize;}
        virtual Int_t    GetStatus() const {return fStatus;}
        virtual void     ls(Option_t *option="") const;
        virtual void     SetBaddress(void *add) {fBaddress = add;}
        virtual void     SetBaddressClassName(const char* clname) { fBaddressClassName = clname; }
        virtual void     SetBaddressIsPtr(Bool_t isptr) { fBaddressIsPtr = isptr; }
        virtual void     SetBaddressType(UInt_t type) { fBaddressType = type; }
        virtual void     SetNumberEntries(Int_t n) {fEntries=n;}
        virtual void     SetPacketSize(Int_t size = 100);
        virtual void     SetStatus(Int_t status) {fStatus = status;}

        ClassDef(TChainElement,1)  //A chain element
};

#endif



syntax highlighted by Code2HTML, v. 0.9.1