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