Files
OpenVulkano/openVulkanoCpp/IO/PlatformFolders.hpp
2021-03-23 02:24:55 +01:00

50 lines
1.9 KiB
C++

/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
#pragma once
#include <filesystem>
namespace openVulkanoCpp
{
class PlatformFolders
{
std::filesystem::path dataHome, configHome, stateDir, dataCache, tempDir;
std::filesystem::path desktop, documents, downloads, pictures, publicDir, music, video, savedGames;
PlatformFolders();
static PlatformFolders& GetInstance();
public:
[[nodiscard]] static const std::filesystem::path& GetDataHomeDir() { return GetInstance().dataHome; }
[[nodiscard]] static const std::filesystem::path& GetConfigHomeDir() { return GetInstance().configHome; }
[[nodiscard]] static const std::filesystem::path& GetStateDir() { return GetInstance().stateDir; }
[[nodiscard]] static const std::filesystem::path& GetCacheDir() { return GetInstance().dataCache; }
[[nodiscard]] static const std::filesystem::path& GetTempDir() { return GetInstance().tempDir; }
[[nodiscard]] static const std::filesystem::path& GetDesktopDir() { return GetInstance().desktop; }
[[nodiscard]] static const std::filesystem::path& GetDocumentsDir() { return GetInstance().documents; }
[[nodiscard]] static const std::filesystem::path& GetDownloadDir() { return GetInstance().downloads; }
[[nodiscard]] static const std::filesystem::path& GetPicturesDir() { return GetInstance().pictures; }
[[nodiscard]] static const std::filesystem::path& GetPublicShareDir() { return GetInstance().publicDir; }
[[nodiscard]] static const std::filesystem::path& GetMusicDir() { return GetInstance().music; }
[[nodiscard]] static const std::filesystem::path& GetVideoDir() { return GetInstance().video; }
[[nodiscard]] static const std::filesystem::path& GetSaveGamesDir() { return GetInstance().savedGames; }
};
}