From: Eduardo DAVILA Date: Tue, 2 Apr 2019 14:35:55 +0000 (+0200) Subject: #3247 BBTK Feature New Normal - FilesFromDirectory RecursiveLevel X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=commitdiff_plain;h=b74201dd98a981a94188d80f0565d7f4dc6a641d;p=bbtk.git #3247 BBTK Feature New Normal - FilesFromDirectory RecursiveLevel --- diff --git a/packages/std/src/bbstdFilesFromDirectory.cxx b/packages/std/src/bbstdFilesFromDirectory.cxx index e444b9b..7ea9ae3 100644 --- a/packages/std/src/bbstdFilesFromDirectory.cxx +++ b/packages/std/src/bbstdFilesFromDirectory.cxx @@ -50,8 +50,7 @@ void FilesFromDirectory::Process() Filenames.clear(); SimpleFilenames.clear(); DirName = bbGetInputIn(); - bool rec = bbGetInputRecursive(); - /*int nbFiles = */ Explore(DirName, rec); + /*int nbFiles = */ Explore(DirName, bbGetInputRecursive(), bbGetInputRecursiveLevel() ); CleanFilenames( DirName ); bbSetOutputOut(Filenames); bbSetOutputOutSimple(SimpleFilenames); @@ -62,6 +61,7 @@ void FilesFromDirectory::bbUserSetDefaultValues() bbSetInputIn("."); bbSetInputRecursive(false); bbSetInputType(0); + bbSetInputRecursiveLevel(999); } void FilesFromDirectory::bbUserInitializeProcessing() @@ -103,11 +103,14 @@ std::string FilesFromDirectory::NormalizePath(std::string const &pathname) -int FilesFromDirectory::Explore(std::string const &dirpath, bool recursive) +int FilesFromDirectory::Explore(std::string const &dirpath, bool recursive, int recursiveLevel) { - int numberOfFiles = 0; - std::string dirName = NormalizePath(dirpath); - int tmpNumberOfFiles; + int numberOfFiles = 0; + +if (recursiveLevel>=0){ + + std::string dirName = NormalizePath(dirpath); + int tmpNumberOfFiles; std::string fileName; #ifdef _MSC_VER WIN32_FIND_DATA fileData; @@ -130,7 +133,7 @@ int FilesFromDirectory::Explore(std::string const &dirpath, bool recursive) numberOfFiles++; } // Type ALL_directories - tmpNumberOfFiles = Explore(dirName+fileName, recursive); + tmpNumberOfFiles = Explore(dirName+fileName, recursive,recursiveLevel-1); if ((bbGetInputType()==2)&&tmpNumberOfFiles==0) { std::string temp = dirName+fileName; @@ -249,7 +252,7 @@ int FilesFromDirectory::Explore(std::string const &dirpath, bool recursive) numberOfFiles++; } // Type All_directories - tmpNumberOfFiles = Explore( fileName, recursive); + tmpNumberOfFiles = Explore( fileName, recursive, recursiveLevel-1); if ((bbGetInputType()==2)&&tmpNumberOfFiles==0) { Filenames.push_back(fileName); @@ -277,6 +280,7 @@ int FilesFromDirectory::Explore(std::string const &dirpath, bool recursive) }// closedir #endif +} // if recursiveLevel return numberOfFiles; } diff --git a/packages/std/src/bbstdFilesFromDirectory.h b/packages/std/src/bbstdFilesFromDirectory.h index 852e83b..841df20 100644 --- a/packages/std/src/bbstdFilesFromDirectory.h +++ b/packages/std/src/bbstdFilesFromDirectory.h @@ -41,6 +41,7 @@ namespace bbstd BBTK_BLACK_BOX_INTERFACE(FilesFromDirectory,bbtk::AtomicBlackBox); BBTK_DECLARE_INPUT(In,std::string); BBTK_DECLARE_INPUT(Recursive,bool); + BBTK_DECLARE_INPUT(RecursiveLevel,int); BBTK_DECLARE_INPUT(Type,int); BBTK_DECLARE_INPUT(FileEnd,std::vector); BBTK_DECLARE_OUTPUT(Out,std::vector); @@ -50,7 +51,7 @@ namespace bbstd private : std::string NormalizePath(std::string const &pathname); - int Explore(std::string const &dirpath, bool recursive); + int Explore(std::string const &dirpath, bool recursive, int recursiveLevel); void CleanFilenames( std::string basePath ); /// List of file names @@ -69,8 +70,9 @@ namespace bbstd BBTK_CATEGORY(""); BBTK_INPUT(FilesFromDirectory,In,"Directory Name",std::string,""); - BBTK_INPUT(FilesFromDirectory,Recursive,"Recursive directory exploration",bool,""); - BBTK_INPUT(FilesFromDirectory,Type,"0=files 1=All_directories 2=last_directories (0 default)",int,""); + BBTK_INPUT(FilesFromDirectory,Recursive,"(default false) Recursive directory exploration",bool,""); + BBTK_INPUT(FilesFromDirectory,Type,"(0 default) 0=files 1=All_directories 2=last_directories ",int,""); + BBTK_INPUT(FilesFromDirectory,RecursiveLevel,"(999 default) Recursive level",int,""); BBTK_INPUT(FilesFromDirectory,FileEnd,"Select just the files with this end file name",std::vector,""); BBTK_OUTPUT(FilesFromDirectory,Out,"FullPathNames of the files",std::vector,"");