aboutsummaryrefslogtreecommitdiff
path: root/src/crepe/fabricator
diff options
context:
space:
mode:
authorheavydemon21 <nielsstunnebrink1@gmail.com>2024-10-01 19:53:56 +0200
committerheavydemon21 <nielsstunnebrink1@gmail.com>2024-10-01 19:53:56 +0200
commitef44da3f5e9ca533782da5e185e69e28c295d226 (patch)
treed44f4f849245f640eff874d53ab610cff2fbe53b /src/crepe/fabricator
parent8e66301577551bc5b8a2e169be173e71de2f5e4e (diff)
Added resources to crepe
Diffstat (limited to 'src/crepe/fabricator')
-rw-r--r--src/crepe/fabricator/CMakeLists.txt8
-rw-r--r--src/crepe/fabricator/resource_fabricator.cpp26
-rw-r--r--src/crepe/fabricator/resource_fabricator.h29
3 files changed, 63 insertions, 0 deletions
diff --git a/src/crepe/fabricator/CMakeLists.txt b/src/crepe/fabricator/CMakeLists.txt
new file mode 100644
index 0000000..4fd7eea
--- /dev/null
+++ b/src/crepe/fabricator/CMakeLists.txt
@@ -0,0 +1,8 @@
+target_sources(crepe PUBLIC
+ resource_fabricator.cpp
+)
+
+target_sources(crepe PUBLIC FILE_SET HEADERS FILES
+ resource_fabricator.h
+)
+
diff --git a/src/crepe/fabricator/resource_fabricator.cpp b/src/crepe/fabricator/resource_fabricator.cpp
new file mode 100644
index 0000000..0633a40
--- /dev/null
+++ b/src/crepe/fabricator/resource_fabricator.cpp
@@ -0,0 +1,26 @@
+
+
+#include "resource_fabricator.h"
+#include <fstream>
+#include <iostream>
+#include <string>
+#include <vector>
+
+
+
+
+std::string ResourceFactory::convert_file_to_string(const std::string& path){
+ std::ifstream file(path, std::ios::binary | std::ios::ate);
+ if (!file.is_open()) {
+ std::cerr << "Failed to open file: " << path << std::endl;
+ return "";
+ }
+
+ std::ifstream::pos_type fileSize = file.tellg();
+ file.seekg(0, std::ios::beg);
+
+ std::vector<char> bytes(fileSize);
+ file.read(bytes.data(), fileSize);
+
+ return std::string(bytes.begin(), bytes.end());
+}
diff --git a/src/crepe/fabricator/resource_fabricator.h b/src/crepe/fabricator/resource_fabricator.h
new file mode 100644
index 0000000..9299ed3
--- /dev/null
+++ b/src/crepe/fabricator/resource_fabricator.h
@@ -0,0 +1,29 @@
+#pragma once
+
+
+
+#include "api/resource.h"
+#include <memory>
+#include <string>
+
+
+
+
+class ResourceFactory {
+
+public:
+
+ template<typename T>
+ static std::unique_ptr<crepe::api::Resource> create_resource(const std::string& file_path){
+
+ return std::make_unique<T>(convert_file_to_string(file_path));
+ }
+
+private:
+ static std::string convert_file_to_string(const std::string& path);
+
+};
+
+
+
+