Begin support for "embedded resources"

Cette révision appartient à :
2025-12-22 10:07:11 +01:00
Parent ae1d33a14e
révision 03b2f44744
2 fichiers modifiés avec 47 ajouts et 0 suppressions

22
embedded.cpp Fichier normal
Voir le fichier

@@ -0,0 +1,22 @@
#include <unordered_map>
#include <string_view>
#include "embedded.h"
std::unordered_map<std::string_view, std::string_view> text_resources;
#include "embedded_declarations.inc"
void utils::embedded_init_text_resources()
{
#include "init_text_resources.inc"
}
std::string_view utils::embedded_get_text_resource(std::string_view name)
{
auto it = text_resources.find(name);
if(it != text_resources.end())
{
return it->second;
}
return std::string_view{};
}

25
embedded.h Fichier normal
Voir le fichier

@@ -0,0 +1,25 @@
#ifndef EMBEDDED_H
#define EMBEDDED__H
#include <string_view>
#define DECLARE_RESOURCE(name) \
extern "C" \
{ \
extern const char _binary_##name##_start[]; \
extern const char _binary_##name##_end[]; \
}
#define RESOURCE_START(name) (_binary_##name##_start)
#define RESOURCE_END(name) (_binary_##name##_end)
#define RESOURCE_SIZE(name) (static_cast<std::size_t>(_binary_##name##_end - _binary_##name##_start))
#define RESOURCE_STRING_VIEW(name) {std::string_view(RESOURCE_START(name), RESOURCE_SIZE(name))}
namespace utils
{
void embedded_init_text_resources();
std::string_view embedded_get_text_resource(std::string_view name);
}
#endif