support file reading from string literal

This commit is contained in:
ohyzha
2024-12-27 16:49:43 +02:00
parent 3cf6d17485
commit 7200166d99
2 changed files with 27 additions and 1 deletions

View File

@@ -15,6 +15,7 @@
#include <cassert>
#include <cinttypes>
#include <atomic>
#include <fstream>
#include "Data/Containers/Array.hpp"
namespace OpenVulkano
@@ -190,6 +191,31 @@ namespace OpenVulkano
static Array<char> ReadFile(const T& filePath, bool emptyOnMissing = false,
bool nullTerminateString = false);
template<size_t N>
static Array<char> ReadFile(const char (&filePath)[N], bool emptyOnMissing = false,
bool nullTerminateString = false)
{
std::ifstream file(filePath, std::ios::ate | std::ios::binary);
if (!file.is_open())
{
if (emptyOnMissing)
{
return {};
}
throw std::runtime_error("Failed to open file '" + std::string(filePath) + "'!");
}
const size_t fileSize = static_cast<size_t>(file.tellg());
Array<char> data(fileSize + nullTerminateString);
file.seekg(0);
file.read(data.Data(), fileSize);
if (nullTerminateString)
{
data[fileSize] = '\0';
}
file.close();
return data;
}
template<class T>
static int GetUniqueTypeId()
{