TObjectSet.h

Go to the documentation of this file.
00001 // @(#)root/table:$Id: TObjectSet.h 20882 2007-11-19 11:31:26Z rdm $
00002 // Author: Valery Fine(fine@bnl.gov)   25/12/98
00003 
00004 /*************************************************************************
00005  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
00006  * All rights reserved.                                                  *
00007  *                                                                       *
00008  * For the licensing terms see $ROOTSYS/LICENSE.                         *
00009  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
00010  *************************************************************************/
00011 #ifndef ROOT_TObjectSet
00012 #define ROOT_TObjectSet
00013 
00014 #include "TDataSet.h"
00015 
00016 //////////////////////////////////////////////////////////////////////////////////////
00017 //                                                                                  //
00018 //  TObjectSet  - is a container TDataSet                                           //
00019 //                  This means this object has an extra pointer to an embedded      //
00020 //                  TObject.                                                        //
00021 //  Terminology:    This TObjectSet may be an OWNER of the embeded TObject          //
00022 //                  If the container is the owner it can delete the embeded object  //
00023 //                  otherwsie it leaves that object "as is"                         //
00024 //                                                                                  //
00025 //////////////////////////////////////////////////////////////////////////////////////
00026 
00027 class TObjectSet : public TDataSet {
00028 protected:
00029    enum EOwnerBits { kIsOwner         = BIT(23) };
00030    TObject *fObj;                              // TObject to be inserted
00031 
00032 public:
00033    TObjectSet(const Char_t *name, TObject *obj=0,Bool_t makeOwner=kTRUE);
00034    TObjectSet(TObject *obj=0,Bool_t makeOwner=kTRUE);
00035    virtual ~TObjectSet();
00036    virtual TObject *AddObject(TObject *obj,Bool_t makeOwner=kTRUE);
00037    virtual void     Browse(TBrowser *b);
00038    virtual void     Delete(Option_t *opt="");
00039    virtual Bool_t   DoOwner(Bool_t done=kTRUE);
00040    virtual Long_t   HasData() const;
00041    virtual TObject *GetObject() const; 
00042    virtual TDataSet *Instance() const;
00043    virtual Bool_t   IsOwner() const;
00044    virtual void     SetObject(TObject *obj);
00045    virtual TObject *SetObject(TObject *obj,Bool_t makeOwner);
00046 
00047    static TObjectSet *instance();
00048 
00049    ClassDef(TObjectSet,1) // TDataSet wrapper for TObject class objects
00050 };
00051 
00052 inline TObjectSet *TObjectSet::instance()
00053 { return new TObjectSet();}
00054 
00055 inline Long_t   TObjectSet::HasData()   const {return fObj ? 1 : 0;}
00056 inline TObject *TObjectSet::GetObject() const {return fObj;}
00057 inline Bool_t   TObjectSet::IsOwner()   const {return TestBit(kIsOwner);}
00058 
00059 inline void     TObjectSet::SetObject(TObject *obj) { SetObject(obj,kTRUE);}
00060 
00061 #endif
00062 

Generated on Tue Jul 5 14:27:41 2011 for ROOT_528-00b_version by  doxygen 1.5.1