Program Listing for File os.h¶
↰ Return to documentation for file (rootex/os/os.h
)
#pragma once
#include <filesystem>
#include <fstream>
#include <chrono>
#include <tchar.h>
#include "common/types.h"
#define ROOT_MARKER_FILENAME "rootex.root"
#define ENGINE_DIRECTORY "rootex"
#define GAME_DIRECTORY "game"
typedef Vector<char> FileBuffer;
typedef std::chrono::time_point<std::filesystem::file_time_type::clock> FileTimePoint;
std::wstring StringToWideString(const String& str);
String WideStringToString(const std::wstring& wstr);
class OS
{
OS() = delete;
public:
static std::filesystem::file_time_type::clock s_FileSystemClock;
static const std::chrono::time_point<std::chrono::system_clock> s_ApplicationStartTime;
static FilePath s_RootDirectory;
static FilePath s_GameDirectory;
static FilePath s_EngineDirectory;
~OS() = delete;
static bool Initialize();
static void Execute(const String& string);
static void RunApplication(const String& commandLine);
static bool ElevateThreadPriority();
static int GetCurrentThreadPriority();
static String GetBuildDate();
static String GetBuildTime();
static String GetBuildType();
static String GetGameExecutablePath();
static String GetOrganizationName();
static String GetAppDataFolder();
static String GetAbsoluteSaveGameFolder(const String& appName);
static int GetDisplayWidth();
static int GetDisplayHeight();
static Optional<String> SelectFile(const char* filter, const char* dir = nullptr);
static Optional<String> SaveSelectFile(const char* filter, const char* dir = nullptr);
static void OpenFileInSystemEditor(const String& filePath);
static void OpenFileInExplorer(const String& filePath);
static void EditFileInSystemEditor(const String& filePath);
static FileTimePoint GetFileLastChangedTime(const String& filePath);
static bool IsExistsAbsolute(String absPath);
static bool IsExists(String relativePath);
static FileBuffer LoadFileContents(String stringPath);
static JSON::json LoadFileContentsToJSONObject(String stringPath);
static FileBuffer LoadFileContentsAbsolute(String absPath);
static FilePath GetAbsolutePath(String stringPath);
static FilePath GetRootRelativePath(String stringPath);
static FilePath GetRelativePath(String stringPath, String base);
static String GetFileStem(String stringPath);
static FilePath GetParentPath(String stringPath);
static Vector<FilePath> GetAllFilesInDirectory(const String& directory);
static Vector<FilePath> GetAllInDirectory(const String& directory);
static Vector<FilePath> GetAllInDirectoryRoot(const String& directory);
static Vector<FilePath> GetDirectoriesInDirectory(const String& directory);
static bool DeleteDirectory(const String& dirPath);
static bool Rename(const String& sourcePath, const String& destinationPath);
static Vector<FilePath> GetFilesInDirectory(const String& directory);
static bool RelativeCopyFile(const String& src, const String& dest);
static void RelativeCopyDirectory(const String& src, const String& dest);
static bool IsDirectory(const String& path);
static bool IsFile(const String& path);
static void RegisterFileChangesWatcher(const String& path, void (*callback)(PVOID, BOOLEAN), PVOID param);
static void RegisterDirectoryChangesWatcher(const String& path, void (*callback)(PVOID, BOOLEAN), PVOID param);
static bool CreateDirectoryName(const String& dirPath);
static bool CreateDirectoryAbsoluteName(const String& dirPath);
static InputOutputFileStream CreateFileName(const String& filePath);
static InputOutputFileStream CreateFileNameAbsolute(const String& absFilePath);
static bool SaveFile(const FilePath& filePath, const char* fileBuffer, size_t fileSize);
static bool SaveFileAbsolute(const FilePath& absFilePath, const char* fileBuffer, size_t fileSize);
static void Print(const String& msg, const String& type = "Print");
static void PrintInline(const String& msg, const String& type = "Print");
static void Print(const float& real);
static void Print(const int& number);
static void Print(const unsigned int& number);
static void PrintLine(const String& msg);
static void PrintWarning(const String& warning);
static void PrintWarningInline(const String& warning);
static void PrintError(const String& error);
static void PrintErrorInline(const String& error);
static void PrintIf(const bool& expr, const String& error);
static void PrintSilent(const String& msg);
static void PrintInlineSilent(const String& msg);
static void PrintSilent(const float& real);
static void PrintSilent(const int& number);
static void PrintSilent(const unsigned int& number);
static void PrintLineSilent(const String& msg);
static void PrintWarningSilent(const String& warning);
static void PrintWarningInlineSilent(const String& warning);
static void PrintErrorSilent(const String& error);
static void PrintErrorInlineSilent(const String& error);
static void PrintIfSilent(const bool& expr, const String& error);
static void PostError(String message, LPSTR caption);
};