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