#include "QSigExDirHandler.h"
#include "debugger.h"
ClassImp(QSigExDirHandler)
void QSigExDirHandler::GetObjs(TList* list, TDirectory* dir)
{
PRINTF6(this,"\tconst QSigExDirHandler::TList* GetObjs(TList* list<",list,
">, TDirectory* dir<",dir,">)\n")
try{
list->SetOwner(kFALSE);
TList* dirkeylist=dir->GetListOfKeys();
TObject* objbuf;
Int_t i;
for(i=0;i<dir->GetList()->GetSize();i++)
if(!dynamic_cast<TDirectory*>(dir->GetList()->At(i))){
list->AddLast(dir->GetList()->At(i));
}
for(i=0; i< dirkeylist->GetSize();i++){
if(!(list->FindObject(dirkeylist->At(i)->GetName())) &&
!gROOT->GetClass(dynamic_cast<TKey*>(dirkeylist->At(i))->
GetClassName())->GetBaseClass("TDirectory")
&& !(dir->FindObject(dirkeylist->At(i)->GetName()))){
objbuf=dir->Get(dirkeylist->At(i)->GetName());
if(!dynamic_cast<TDirectory*>(objbuf)){
objbuf->SetBit(kCanDelete);
list->AddLast(objbuf);
}else{
dir->RecursiveRemove(objbuf);
delete objbuf;
}
}
}
}catch(Int_t e){
cout << "Exception handled by QSigExDirHandler::GetObjs\n";
throw e;
}
}
void QSigExDirHandler::GetDirs(TList* list, TDirectory* dir)
{
PRINTF6(this,"\tconst QSigExDirHandler::TList* GetDirs(TList* list<",list,
">, TDirectory* dir<",dir,">)\n")
try{
list->SetOwner(kFALSE);
TList* dirkeylist=dir->GetListOfKeys();
TObject* objbuf;
Int_t i;
for(i=0;i<dir->GetList()->GetSize();i++)
if(dynamic_cast<TDirectory*>(dir->GetList()->At(i))){
list->AddLast(dir->GetList()->At(i));
}
for(i=0; i< dirkeylist->GetSize();i++){
if(!(list->FindObject(dirkeylist->At(i)->GetName())) &&
gROOT->GetClass(dynamic_cast<TKey*>(dirkeylist->At(i))->
GetClassName())->GetBaseClass("TDirectory")
&& !(dir->FindObject(dirkeylist->At(i)->GetName()))){
objbuf=dir->Get(dirkeylist->At(i)->GetName());
if(dynamic_cast<TDirectory*>(objbuf)){
list->AddLast(objbuf);
}else{
delete objbuf;
}
}
}
}catch(Int_t e){
cout << "Exception handled by QSigExDirHandler::GetDirs\n";
throw e;
}
}
void QSigExDirHandler::GetListOfObjsKeys(TList* list, TDirectory* dir)
{
Int_t i;
for(i=0;i<dir->GetList()->GetSize();i++)
list->AddLast(dir->GetList()->At(i));
for(i=0;i<dir->GetListOfKeys()->GetSize();i++)
list->AddLast(dir->GetListOfKeys()->At(i));
}
Int_t QSigExDirHandler::DelObjsKeys(const Char_t* name, TDirectory* dir)
{
Int_t ret=0;
TKey* keybuf;
Int_t i;
TObject *objbuf;
for(i=0;i<dir->GetList()->GetSize();i++){
objbuf=dir->GetList()->At(i);
if(!strcmp(objbuf->GetName(),name)){
dir->RecursiveRemove(objbuf);
delete objbuf;
ret++;
}
}
TString strbuf;
while((keybuf=dir->FindKey(name))){
strbuf=keybuf->GetName();
strbuf+=";";
strbuf+=keybuf->GetCycle();
dir->Delete(strbuf);
ret++;
}
return ret;
}
Bool_t QSigExDirHandler::FindObjKey(const Char_t* name, const TDirectory* dir) const
{
if(dir->FindKey(name)) return kTRUE;
if(dir->FindObject(name)) return kTRUE;
Int_t i;
TObject *objbuf;
for(i=0;i<dir->GetList()->GetSize();i++){
objbuf=dir->GetList()->At(i);
if(!strcmp(objbuf->GetName(),name)){
return kTRUE;
}
}
return kFALSE;
}
TDirectory* QSigExDirHandler::CopyDir(TDirectory* fromdir, TDirectory* todir)
{
fromdir=NULL;
return todir;
}
TDirectory* QSigExDirHandler::SetDirectory(TDirectory* dir, TObject* obj)
{
if(dynamic_cast<TChain*>(obj)){
dynamic_cast<TChain*>(obj)->SetDirectory(dir);
} else if(dynamic_cast<TEventList*>(obj)){
dynamic_cast<TEventList*>(obj)->SetDirectory(dir);
} else if(dynamic_cast<TH1*>(obj)){
dynamic_cast<TH1*>(obj)->SetDirectory(dir);
} else if(dynamic_cast<TH2*>(obj)){
dynamic_cast<TH2*>(obj)->SetDirectory(dir);
} else if(dynamic_cast<TTree*>(obj)){
dynamic_cast<TTree*>(obj)->SetDirectory(dir);
} else dir->Add(obj);
return dir;
}
void QSigExDirHandler::CheckCardNFields(Int_t nfields, Int_t min, Int_t max)
{
if(max==-1) max=nfields;
if(nfields<min || nfields>max){
cout << "Error in card file: wrong number of fields\n";
throw 1;
}
}
#include "debugger.h"
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.