src: use FilePath in FileSystem::getFileNamesFromDirectory

This commit is contained in:
malte_langkabel
2017-05-11 16:30:14 +02:00
parent 156c3d4b9f
commit 40157039b4
7 changed files with 43 additions and 27 deletions
+3 -3
View File
@@ -5,11 +5,11 @@
#include "boost/date_time.hpp"
#include "boost/filesystem.hpp"
std::vector<std::string> FileSystem::getFileNamesFromDirectory(
std::vector<FilePath> FileSystem::getFilePathsFromDirectory(
const FilePath& path, const std::vector<std::string>& extensions
){
std::set<std::string> ext(extensions.begin(), extensions.end());
std::vector<std::string> files;
std::vector<FilePath> files;
if (boost::filesystem::is_directory(path.path()))
{
@@ -30,7 +30,7 @@ std::vector<std::string> FileSystem::getFileNamesFromDirectory(
if (boost::filesystem::is_regular_file(*it) && ext.find(it->path().extension().string()) != ext.end())
{
files.push_back(it->path().generic_string());
files.push_back(FilePath(it->path().generic_string()));
}
++it;
}
+1 -1
View File
@@ -10,7 +10,7 @@
class FileSystem
{
public:
static std::vector<std::string> getFileNamesFromDirectory(
static std::vector<FilePath> getFilePathsFromDirectory(
const FilePath& path, const std::vector<std::string>& extensions);
static FileInfo getFileInfoForPath(const FilePath& filePath);
+16
View File
@@ -4,8 +4,10 @@
#include <algorithm>
#include <cstdarg>
#include <deque>
#include <functional>
#include <set>
#include <time.h>
#include <vector>
#include <unordered_set>
#include "boost/date_time/posix_time/posix_time.hpp"
@@ -58,6 +60,9 @@ namespace utility
template<typename T, typename... Args>
std::vector<T> createVectorFromElements(const Args&... args);
template<typename SourceType, typename TargetType>
std::vector<TargetType> convert(const std::vector<SourceType>& sourceContainer, std::function<TargetType(const SourceType&)> conversion);
template<typename T>
std::vector<std::string> toStrings(const std::vector<T>& d);
template<>
@@ -198,6 +203,17 @@ std::vector<T> utility::createVectorFromElements(const Args&... args)
return v;
}
template<typename SourceType, typename TargetType>
std::vector<TargetType> utility::convert(const std::vector<SourceType>& sourceContainer, std::function<TargetType(const SourceType&)> conversion)
{
std::vector<TargetType> targetContainer;
for (const SourceType& sourceElement: sourceContainer)
{
targetContainer.push_back(conversion(sourceElement));
}
return targetContainer;
}
template<typename T>
std::vector<std::string> utility::toStrings(const std::vector<T>& d)
{
+3 -3
View File
@@ -40,13 +40,13 @@ namespace utility
{
std::vector<std::string> extensions;
extensions.push_back(extension);
std::vector<std::string> fontFileNames = FileSystem::getFileNamesFromDirectory(path, extensions);
std::vector<FilePath> fontFilePaths = FileSystem::getFilePathsFromDirectory(path, extensions);
std::set<int> loadedFontIds;
for (const std::string& fontFileName: fontFileNames)
for (const FilePath& fontFilePath: fontFilePaths)
{
QFile file(fontFileName.c_str());
QFile file(fontFilePath.str().c_str());
if (file.open(QIODevice::ReadOnly))
{
int id = QFontDatabase::addApplicationFontFromData(file.readAll());
@@ -16,12 +16,7 @@ QtProjectWizzardContentPreferences::QtProjectWizzardContentPreferences(
, m_oldColorSchemeIndex(-1)
, m_newColorSchemeIndex(-1)
{
std::vector<std::string> colorSchemePaths =
FileSystem::getFileNamesFromDirectory(ResourcePaths::getColorSchemesPath(), std::vector<std::string>(1, ".xml"));
for (const std::string& colorScheme : colorSchemePaths)
{
m_colorSchemePaths.push_back(FilePath(colorScheme));
}
m_colorSchemePaths = FileSystem::getFilePathsFromDirectory(ResourcePaths::getColorSchemesPath(), std::vector<std::string>(1, ".xml"));
}
QtProjectWizzardContentPreferences::~QtProjectWizzardContentPreferences()
+6 -7
View File
@@ -187,14 +187,13 @@ std::vector<FilePath> SourceGroupJava::getClassPath()
if (m_settings->getAbsoluteMavenDependenciesDirectory().exists())
{
const std::vector<std::string> dependencies = FileSystem::getFileNamesFromDirectory(
m_settings->getAbsoluteMavenDependenciesDirectory(),
utility::createVectorFromElements<std::string>(".jar")
utility::append(
classPath,
FileSystem::getFilePathsFromDirectory(
m_settings->getAbsoluteMavenDependenciesDirectory(),
utility::createVectorFromElements<std::string>(".jar")
)
);
for (const std::string& dependency: dependencies)
{
classPath.push_back(FilePath(dependency));
}
}
for (FilePath rootDirectory: fetchRootDirectories())
+13 -7
View File
@@ -7,7 +7,7 @@
#include "utility/file/FileSystem.h"
class FileSystemTestSuite : public CxxTest::TestSuite
class FileSystemTestSuite: public CxxTest::TestSuite
{
public:
void test_find_cpp_files()
@@ -15,8 +15,10 @@ public:
std::vector<std::string> extensions;
extensions.push_back(".cpp");
std::vector<std::string> cppFiles =
FileSystem::getFileNamesFromDirectory(FilePath("data/FileSystemTestSuite"), extensions);
std::vector<std::string> cppFiles = utility::convert<FilePath, std::string>(
FileSystem::getFilePathsFromDirectory(FilePath("data/FileSystemTestSuite"), extensions),
[](const FilePath& filePath){ return filePath.str(); }
);
TS_ASSERT_EQUALS(cppFiles.size(), 4);
TS_ASSERT(isInVector(cppFiles, "data/FileSystemTestSuite/main.cpp"));
@@ -30,8 +32,10 @@ public:
std::vector<std::string> extensions;
extensions.push_back(".h");
std::vector<std::string> headerFiles =
FileSystem::getFileNamesFromDirectory(FilePath("data/FileSystemTestSuite"), extensions);
std::vector<std::string> headerFiles = utility::convert<FilePath, std::string>(
FileSystem::getFilePathsFromDirectory(FilePath("data/FileSystemTestSuite"), extensions),
[](const FilePath& filePath){ return filePath.str(); }
);
TS_ASSERT_EQUALS(headerFiles.size(), 3);
TS_ASSERT(isInVector(headerFiles, "data/FileSystemTestSuite/tictactoe.h"));
@@ -46,8 +50,10 @@ public:
extensions.push_back(".hpp");
extensions.push_back(".cpp");
std::vector<std::string> sourceFiles =
FileSystem::getFileNamesFromDirectory(FilePath("data/FileSystemTestSuite"), extensions);
std::vector<std::string> sourceFiles = utility::convert<FilePath, std::string>(
FileSystem::getFilePathsFromDirectory(FilePath("data/FileSystemTestSuite"), extensions),
[](const FilePath& filePath){ return filePath.str(); }
);
TS_ASSERT_EQUALS(sourceFiles.size(), 8);
}