37      Bool_t 
GetObject(TObject *&obj, Bool_t &owner)
 const override 
   39         TClass *cl = gROOT->GetClass(
fKey->GetClassName());
 
   40         if (cl && !cl->IsLoaded()) {
 
   48         obj = 
fKey->ReadObj();
 
   49         if (!obj) 
return kFALSE;
 
   51         if (obj->InheritsFrom(TH1::Class()) || obj->InheritsFrom(TTree::Class())) owner = kFALSE; 
else 
   52         if (obj->InheritsFrom(TCanvas::Class())) { 
fDir->Add(obj); owner = kFALSE; }
 
 
   57        { 
return fKey->GetName(); }
 
 
   60        { 
return fKey->GetClassName(); }
 
 
 
   88         fIter = 
fDir->GetListOfKeys()->MakeIterator();
 
 
   99         Bool_t donext = kTRUE;
 
  119                 if (strcmp(
fCurrent->ClassName(), key->GetClassName()) == 0) donext = kTRUE;
 
 
  127         if (!cl) 
return kFALSE;
 
  128         return cl->InheritsFrom(TDirectory::Class()) ||
 
  129                cl->InheritsFrom(TTree::Class()) ||
 
  130                cl->InheritsFrom(TCanvas::Class()) ||
 
  131                cl->InheritsFrom(THStack::Class());
 
 
  136         TClass *cl = 
nullptr;
 
  139            TObject *obj = 
fDir->FindObject(key->GetName());
 
  140            if (obj) cl = obj->IsA();
 
 
  154         if (!obj) 
return nullptr;
 
  156         if (obj->InheritsFrom(TTree::Class()))
 
  159         if (obj->InheritsFrom(TCanvas::Class()))
 
  162         if (obj->InheritsFrom(THStack::Class()))
 
  165         TDirectory *subdir = 
dynamic_cast<TDirectory *
> (obj);
 
 
  174         fNameBuf.Form(
"%s;%d",key->GetName(),(
int) key->GetCycle());
 
 
  185         TClass *cl = 
nullptr;
 
  190            sz = key->GetNbytes();
 
  191            TObject *obj = 
fDir->FindObject(key->GetName());
 
  197         bool isdir = cl && cl->InheritsFrom(TDirectory::Class());
 
  198         return isdir ? 0 : sz;
 
 
  208            if (!cl) cl = gROOT->GetClass(key->GetClassName(), kTRUE, kTRUE);
 
 
 
  231   SetDir(dir, readright, owner);
 
 
  261   return fDir ? 
fDir->ClassName() : 
nullptr;
 
 
  266   return fDir ? 
fDir->GetTitle() : 
nullptr;
 
 
  271    TFile *f = 
dynamic_cast<TFile *
> (
fDir);
 
 
  277   if (!dir) 
return nullptr;
 
  280      return std::make_unique<TGo4ObjectAccess>(dir);
 
  282   TDirectory *curdir = dir;
 
  283   const char *curname = name;
 
  285   while (curdir && curname) {
 
  286      const char *slash = strchr(curname,
'/');
 
  293         partname.Append(curname, slash - curname);
 
  295         if (*curname == 0) curname = 
nullptr; 
 
  299      Short_t cyclebuf(9999);
 
  300      TDirectory::DecodeNameCycle(partname.Data(), namebuf, cyclebuf, 
sizeof(namebuf));
 
  302      TObject *obj = curdir->GetList()->FindObject(namebuf);
 
  304         TKey *key = curdir->GetKey(namebuf, cyclebuf);
 
  305         if (!key) 
return nullptr;
 
  307            return std::make_unique<TGo4KeyAccess>(curdir, key);
 
  309         obj = curdir->Get(partname.Data());
 
  310         if (obj && obj->InheritsFrom(TCanvas::Class())) curdir->Add(obj);
 
  311         if (obj && browser_slot)
 
  315      if (!obj) 
return nullptr;
 
  317      TTree *tr = 
dynamic_cast<TTree *
> (obj);
 
  321      TCanvas *canv = 
dynamic_cast<TCanvas *
> (obj);
 
  325      THStack *hs = 
dynamic_cast<THStack *
> (obj);
 
  329      curdir = 
dynamic_cast<TDirectory *
>(obj);
 
  332         return std::make_unique<TGo4ObjectAccess>(obj);
 
 
  345      const char *filename = 
nullptr;
 
  346      if (
fDir && 
fDir->InheritsFrom(TFile::Class()))
 
  347         filename = 
fDir->GetName();
 
  349     slot->
SetPar(
"DirProxy::FileName", filename);
 
  350     slot->
SetPar(
"DirProxy::gROOT", (
fDir==gROOT) ? 
"true" : 
nullptr);
 
 
  358   const char *filename = slot->
GetPar(
"DirProxy::FileName");
 
  359   const char *groot = slot->
GetPar(
"DirProxy::gROOT");
 
  362     TFile *f = TFile::Open(filename);
 
  363     if (f) 
SetDir(f, kTRUE, kTRUE);
 
  365     SetDir(gROOT, kFALSE, kFALSE);
 
 
  370   if (!filepath || !
fDir) 
return kFALSE;
 
  372   TFile *f = 
dynamic_cast<TFile *
> (
fDir);
 
  373   if (!f) 
return kFALSE;
 
  375   if (f->ReOpen(
"UPDATE") < 0) 
return kFALSE;
 
  377   TString foldername, objname;
 
  380   TDirectory *objdir = f;
 
  382   if (foldername.Length() > 0)
 
  383      objdir = 
dynamic_cast<TDirectory *
> (f->Get(foldername));
 
  387   TDirectory::DecodeNameCycle(objname.Data(), namebuf, cyclebuf, 
sizeof(namebuf));
 
  391      objdir->Delete(objname.Data());
 
  392      objdir->WriteTObject(obj, namebuf, 
"Overwrite");
 
 
  402   return dynamic_cast<TFile *
>(
fDir) != 
nullptr;
 
 
static std::unique_ptr< TGo4Access > CreateAccess(TCanvas *canv, const char *name)
 
static TGo4LevelIter * ProduceIter(TCanvas *canv)
 
const char * info() override
 
const char * GetClassName() override
 
TGo4LevelIter * subiterator() override
 
Bool_t isfolder() override
 
virtual ~TGo4DirLevelIter()
 
TGo4DirLevelIter(TDirectory *dir, Bool_t readright)
 
Bool_t IsContainerClass(TClass *cl)
 
Int_t sizeinfo() override
 
const char * name() override
 
static std::unique_ptr< TGo4Access > CreateAccess(TDirectory *dir, Bool_t readright, const char *name, TGo4Slot *browser_slot=nullptr)
 
const char * GetFileName() const
 
void SetDir(TDirectory *dir, Bool_t readright, Bool_t owner)
 
void ReadData(TGo4Slot *slot, TDirectory *dir) override
 
void WriteData(TGo4Slot *slot, TDirectory *dir, Bool_t onlyobjs) override
 
static TGo4LevelIter * ProduceIter(TDirectory *dir, Bool_t readright)
 
Int_t GetObjectSizeInfo() const override
 
Int_t GetObjectKind() const override
 
Bool_t UpdateObjectInFile(const char *filepath, TObject *obj)
 
const char * GetContainedObjectInfo() override
 
const char * GetContainedClassName() const override
 
static TGo4LevelIter * ProduceIter(THStack *hs)
 
static std::unique_ptr< TGo4Access > CreateAccess(THStack *hs, const char *name)
 
Bool_t GetObject(TObject *&obj, Bool_t &owner) const override
 
TGo4KeyAccess(TDirectory *dir, TKey *key)
 
Bool_t CanGetObject() const override
Returns kTRUE, when object can be directly obtained with GetObject() method.
 
const char * GetObjectName() const override
 
const char * GetObjectClassName() const override
 
static Long_t DefineObjectSize(TObject *obj)
 
static TClass * GetClass(const char *classname, Bool_t load=kFALSE)
 
virtual Int_t GetObjectSizeInfo() const
 
void ForwardEvent(TGo4Slot *source, Int_t id, void *param=nullptr)
 
static void ProduceFolderAndName(const char *fullname, TString &foldername, TString &objectname)
 
void SetPar(const char *name, const char *value)
 
const char * GetPar(const char *name) const
 
static std::unique_ptr< TGo4Access > CreateAccess(TTree *tree, const char *name)
 
static TGo4LevelIter * ProduceIter(TTree *tree)