Re: [ROOT] Request for iteration on TSystemDirectory

From: Fons Rademakers (Fons.Rademakers@cern.ch)
Date: Mon Mar 12 2001 - 18:18:55 MET


Hi Christian,

  if you send me a patch with these proposed enhancements I'll be happy to
integrate them in the system.

Cheers, Fons.



Christian Holm Christensen wrote:
> 
> 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

-- 
Org:    CERN, European Laboratory for Particle Physics.
Mail:   1211 Geneve 23, Switzerland
E-Mail: Fons.Rademakers@cern.ch              Phone: +41 22 7679248
WWW:    http://root.cern.ch/~rdm/            Fax:   +41 22 7677910



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