11#include <promeki/config.h>
12#if PROMEKI_ENABLE_CORE
29typedef struct cirf_file cirf_file_t;
30typedef struct cirf_folder cirf_folder_t;
32PROMEKI_NAMESPACE_BEGIN
85 static constexpr const char *Prefix =
":/";
91 static bool isResourcePath(
const String &path);
101 static String stripPrefix(
const String &path);
112 static const cirf_file_t *findFile(
const String &path);
120 static const cirf_folder_t *findFolder(
const String &path);
125 static bool exists(
const String &path);
140 static Buffer data(
const String &path, Error *err =
nullptr);
149 static String mime(
const String &path);
156 static size_t size(
const String &path);
170 static List<FilePath> listFiles(
const String &path, Error *err =
nullptr);
175 static List<FilePath> listFolders(
const String &path, Error *err =
nullptr);
180 static List<FilePath> listEntries(
const String &path, Error *err =
nullptr);
202 static Error registerRoot(
const cirf_folder_t *root,
const String &prefix = String());
210 static void unregisterRoot(
const String &prefix);
232#define PROMEKI_REGISTER_RESOURCES(NAME, PREFIX) \
234 struct PROMEKI_CONCAT(_promeki_resreg_, NAME) { \
235 PROMEKI_CONCAT(_promeki_resreg_, NAME)() { \
236 ::promeki::Resource::registerRoot(&NAME##_root, PREFIX); \
239 static PROMEKI_CONCAT(_promeki_resreg_, NAME) PROMEKI_CONCAT(_promeki_resreg_inst_, NAME); \