From 03b2f44744f9223c4a878b8ad311a29779d65cf0 Mon Sep 17 00:00:00 2001 From: "Albert S." Date: Mon, 22 Dec 2025 10:07:11 +0100 Subject: [PATCH] Begin support for "embedded resources" --- embedded.cpp | 22 ++++++++++++++++++++++ embedded.h | 25 +++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 embedded.cpp create mode 100644 embedded.h diff --git a/embedded.cpp b/embedded.cpp new file mode 100644 index 0000000..efe9a58 --- /dev/null +++ b/embedded.cpp @@ -0,0 +1,22 @@ +#include +#include +#include "embedded.h" + +std::unordered_map 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{}; +} diff --git a/embedded.h b/embedded.h new file mode 100644 index 0000000..0f306b4 --- /dev/null +++ b/embedded.h @@ -0,0 +1,25 @@ +#ifndef EMBEDDED_H +#define EMBEDDED__H + +#include + +#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(_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