logic: add include path validation to project settings

This commit is contained in:
malte_langkabel
2017-07-24 09:20:08 +02:00
parent faae66b304
commit bec7aa4aac
11 changed files with 411 additions and 138 deletions
+17
View File
@@ -56,6 +56,23 @@ std::set<FilePath> FileManager::getAllSourceFilePaths() const
return m_allSourceFilePaths;
}
std::set<FilePath> FileManager::getAllSourceFilePathsRelative(const FilePath& baseDirectory) const
{
std::set<FilePath> absolutePaths;
for (const FilePath& path: getAllSourceFilePaths())
{
if (baseDirectory.exists())
{
absolutePaths.insert(path.relativeTo(baseDirectory));
}
else
{
absolutePaths.insert(path);
}
}
return absolutePaths;
}
std::vector<FilePath> FileManager::makeCanonical(const std::vector<FilePath>& filePaths)
{
std::vector<FilePath> ret;
+1
View File
@@ -28,6 +28,7 @@ public:
// returns a list of paths to all files that reside in the non-excluded source paths
std::set<FilePath> getAllSourceFilePaths() const;
std::set<FilePath> getAllSourceFilePathsRelative(const FilePath& baseDirectory) const;
private:
std::vector<FilePath> makeCanonical(const std::vector<FilePath>& filePaths);
@@ -1,126 +0,0 @@
#include "SharedUUIDManager.h"
#include <fstream>
#include "utility/file/FileSystem.h"
#include "utility/ConfigManager.h"
#include "utility/text/TextAccess.h"
#include "utility/UserPaths.h"
const std::string SharedUUIDManager::m_fileName("sharedUUIDs.xml");
const std::string SharedUUIDManager::m_instanceUUIDsKey("instances");
std::shared_ptr<SharedUUIDManager> SharedUUIDManager::m_instance(NULL);
std::shared_ptr<SharedUUIDManager> SharedUUIDManager::getInstance()
{
if (m_instance == NULL)
{
// m_instance = std::make_shared<SharedUUIDManager>();
SharedUUIDManager* sharedUUIDManager = new SharedUUIDManager();
m_instance = std::shared_ptr<SharedUUIDManager>(sharedUUIDManager);
m_instance->setFilePath(UserPaths::getUserDataPath().str());
m_instance->saveInstanceUUID();
}
return m_instance;
}
SharedUUIDManager::~SharedUUIDManager()
{
}
void SharedUUIDManager::setFilePath(const std::string& filePath)
{
m_filePath = filePath;
FileSystem::createDirectory(FilePath(m_filePath));
refreshUUIDs();
}
std::string SharedUUIDManager::getInstanceUUID() const
{
return UUIDUtility::UUIDtoString(m_instanceUUID);
}
std::string SharedUUIDManager::getNewUUID()
{
std::string uuidString = UUIDUtility::getUUIDString();
std::vector<std::string> uuids;
m_uuids->getValues(UUIDUtility::UUIDtoString(m_instanceUUID), uuids);
uuids.push_back(uuidString);
m_uuids->setValues(UUIDUtility::UUIDtoString(m_instanceUUID), uuids);
m_uuids->save(m_filePath + m_fileName);
return uuidString;
}
std::vector<std::string> SharedUUIDManager::getUUIDsForInstance(const std::string& instanceUUID)
{
std::vector<std::string> uuids;
m_uuids->getValues(instanceUUID, uuids);
return uuids;
}
void SharedUUIDManager::removeUUIDsForInstance(const std::string& instanceUUID)
{
m_uuids->removeValues(instanceUUID);
m_uuids->save(m_filePath + m_fileName);
}
std::vector<std::string> SharedUUIDManager::getStoredInstanceUUIDs() const
{
std::vector<std::string> instanceUUIDs;
m_uuids->getValues(m_instanceUUIDsKey, instanceUUIDs);
return instanceUUIDs;
}
void SharedUUIDManager::removeInstanceUUID(const std::string& instanceUUID)
{
std::vector<std::string> instanceUUIDs;
m_uuids->getValues(m_instanceUUIDsKey, instanceUUIDs);
// instanceUUIDs
for (std::vector<std::string>::iterator it = instanceUUIDs.begin(); it != instanceUUIDs.end(); it++)
{
if (*it == instanceUUID)
{
instanceUUIDs.erase(it);
break;
}
}
m_uuids->setValues(m_instanceUUIDsKey, instanceUUIDs);
m_uuids->save(m_filePath + m_fileName);
}
SharedUUIDManager::SharedUUIDManager()
: m_filePath("user/")
, m_instanceUUID(UUIDUtility::getUUID())
, m_uuids(NULL)
{
}
void SharedUUIDManager::saveInstanceUUID()
{
std::vector<std::string> instanceUUIDs;
m_uuids->getValues(m_instanceUUIDsKey, instanceUUIDs);
instanceUUIDs.push_back(getInstanceUUID());
m_uuids->setValues(m_instanceUUIDsKey, instanceUUIDs);
}
void SharedUUIDManager::refreshUUIDs()
{
if (FilePath(m_filePath + m_fileName).exists())
{
m_uuids = ConfigManager::createAndLoad(TextAccess::createFromFile(FilePath(m_filePath + m_fileName)));
}
}
+2 -1
View File
@@ -166,7 +166,8 @@ std::vector<T> utility::unique(const std::vector<T>& a)
}
}
std::vector<T> r(i, T());
std::vector<T> r;
r.reserve(i);
for (const std::pair<T, size_t>& p : unique)
{
r[p.second] = p.first;