summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/resource.cpp16
-rw-r--r--lib/resource.h23
2 files changed, 39 insertions, 0 deletions
diff --git a/lib/resource.cpp b/lib/resource.cpp
new file mode 100644
index 0000000..b9aa4fa
--- /dev/null
+++ b/lib/resource.cpp
@@ -0,0 +1,16 @@
+#include "resource.h"
+#include <utility>
+
+std::filesystem::path base {std::filesystem::current_path() / "res"};
+
+void
+Resource::setBasePath(std::filesystem::path newbase)
+{
+ base = std::move(newbase);
+}
+
+std::filesystem::path
+Resource::mapPath(const std::filesystem::path & rel)
+{
+ return std::filesystem::canonical(base / rel);
+}
diff --git a/lib/resource.h b/lib/resource.h
new file mode 100644
index 0000000..958c49d
--- /dev/null
+++ b/lib/resource.h
@@ -0,0 +1,23 @@
+#ifndef RESOURCE_H
+#define RESOURCE_H
+
+#include <filesystem>
+
+class Resource {
+public:
+ static void setBasePath(std::filesystem::path);
+ static std::filesystem::path mapPath(const std::filesystem::path &);
+};
+
+#if defined(RESDIR) && defined(BOOST_TEST_MODULE)
+class SetResourcePath {
+public:
+ SetResourcePath()
+ {
+ Resource::setBasePath(RESDIR);
+ }
+};
+BOOST_GLOBAL_FIXTURE(SetResourcePath);
+#endif
+
+#endif