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