// @(#)root/star:$Name: $:$Id: TObjectSet.cxx,v 1.4 2005/07/05 15:11:42 brun Exp $
// Author: Valery Fine(fine@bnl.gov) 25/12/98
// $Id: TObjectSet.cxx,v 1.4 2005/07/05 15:11:42 brun Exp $
/*************************************************************************
* 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. *
*************************************************************************/
#include "TObjectSet.h"
#include "TBrowser.h"
ClassImp(TObjectSet)
//////////////////////////////////////////////////////////////////////////////////////
// //
// TObjectSet - is a container TDataSet //
// This means this object has an extra pointer to an embedded //
// TObject. //
// Terminology: This TObjectSet may be an OWNER of the embeded TObject //
// If the container is the owner it can delete the embeded object //
// otherwsie it leaves that object "as is" //
// //
//////////////////////////////////////////////////////////////////////////////////////
//_____________________________________________________________________________
TObjectSet::TObjectSet(const Char_t *name, TObject *obj, Bool_t makeOwner):TDataSet(name)
{
SetTitle("TObjectSet");
SetObject(obj,makeOwner);
}
//_____________________________________________________________________________
TObjectSet::TObjectSet(TObject *obj,Bool_t makeOwner) : TDataSet("unknown","TObjectSet")
{
SetObject(obj,makeOwner);
}
//_____________________________________________________________________________
TObjectSet::~TObjectSet()
{
if (fObj && IsOwner() && (TObject::TestBit(kNotDeleted)) ) delete fObj;
fObj = 0;
}
//______________________________________________________________________________
TObject *TObjectSet::AddObject(TObject *obj,Bool_t makeOwner)
{
// Aliase for SetObject method
return SetObject(obj,makeOwner);
}
//______________________________________________________________________________
void TObjectSet::Browse(TBrowser *b)
{
// Browse this dataset (called by TBrowser).
if (b && fObj) b->Add(fObj);
TDataSet::Browse(b);
}
//_____________________________________________________________________________
void TObjectSet::Delete(Option_t *opt)
{
if (opt) {/* no used */}
if (fObj && IsOwner()) delete fObj;
fObj = 0;
TDataSet::Delete();
}
//______________________________________________________________________________
Bool_t TObjectSet::DoOwner(Bool_t done)
{
// Set / Reset the ownerships and returns the previous
// status of the ownerships.
Bool_t own = IsOwner();
if (own != done) {
if (done) SetBit(kIsOwner);
else ResetBit(kIsOwner);
}
return own;
}
//______________________________________________________________________________
TDataSet *TObjectSet::Instance() const
{
// apply the class default ctor to instantiate a new object of the same kind.
// This is a base method to be overriden by the classes
// derived from TDataSet (to support TDataSetIter::Mkdir for example)
return instance();
}
//______________________________________________________________________________
TObject *TObjectSet::SetObject(TObject *obj,Bool_t makeOwner)
{
//
// - Replace the embedded object with a new supplied
// - Destroy the preivous embedded object if this is its owner
// - Return the previous embedded object if any
//
TObject *oldObject = fObj;
if (IsOwner()) { delete oldObject; oldObject = 0;} // the object has been killed
fObj = obj;
DoOwner(makeOwner);
return oldObject;
}
ROOT page - Class index - Class Hierarchy - Top of the page
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.