[ROOT] Request for iteration on TSystemDirectory

From: Christian Holm Christensen (cholm@hehi03.nbi.dk)
Date: Mon Mar 12 2001 - 18:04:35 MET


Hi ROOT'ers, 

I'd like very much if it would be possible to iterate over a
TSystemDirectory. I imagine one could do 


  TSystemDirectory dir("some directory"); 
  TSystemFile*     file = 0;
  TIter next(dir);
  
  while ((file = (TSystemFile*)next())) {
    // do something in this file
    ...  
  }

As an additional feature, one could have a constructor that uses
wildcard globing: 

  TSystemDirectory dir("some directory", "*.root"); 

If using a TIter would not be feasable for TSystemDirectory, could one
at least have something like:   

  UInt_t       TSystemDirectory::GetEntries(); 
  TSystemFile* TSystemDirectory::At(UInt_t i);

so that one may iterate through the list in a sligtly more clumbersome
way:

  Int_t n = dir.GetEntries(); 

  for (Int_t i = 0; i < n; i++) { 
    file = dir.At(i); 
    // do something in this file
    ...
  }

I realise ofcourse, that this would mean taking the internal list
initialisation out of the Browse method, and into something else like
say Initialise. The list can then be created "just-in-time": 

  TSystemDirectory::Browse(TBrowser* b) { 
    // 
    if (!fListOfDirEntries) 
      Initialise(); 
    ... 
  }
 
and so on. I don't see why you don't have "." and ".." in the
list. I'd imagine something like 

  TSystemDirectory::Browse(TBrowser* b) { 
    // 
    .
    TString *name = GetTitle();
    if (!name->CompareTo(".."))
      *name = gSystem->DirName(gSystem->WorkingDirectory()); 
    ...
  }

would work. 

Anyway, just a few thoughts on this. I've this functionallity is in
ROOT somewhere and I've just overlooked it, then I'm sorry for
bothering you, and could someone please point out to me where -
thanks. 

Yours, 

Christian  -----------------------------------------------------------
Holm Christensen                             Phone:  (+45) 35 35 96 91 
  Sankt Hansgade 23, 1. th.                  Office: (+45) 353  25 305 
  DK-2200 Copenhagen N                       Web:    www.nbi.dk/~cholm    
  Denmark                                    Email:       cholm@nbi.dk



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:39 MET