aboutsummaryrefslogtreecommitdiff
path: root/src/example
diff options
context:
space:
mode:
authorLoek Le Blansch <loek@pipeframe.xyz>2024-10-26 15:58:39 +0200
committerLoek Le Blansch <loek@pipeframe.xyz>2024-10-26 15:58:39 +0200
commite0b1ddae296037376948a4c6f200d89e6d1ba81e (patch)
treef70e5a9b73e0b10e5c9fe263e146e9884474ac0f /src/example
parent2d67cf09b80297d13f642afd7db13dba53ca2b9b (diff)
WIP save manager
Diffstat (limited to 'src/example')
-rw-r--r--src/example/CMakeLists.txt3
-rw-r--r--src/example/proxy.cpp47
-rw-r--r--src/example/savemgr.cpp27
3 files changed, 77 insertions, 0 deletions
diff --git a/src/example/CMakeLists.txt b/src/example/CMakeLists.txt
index fea6f60..8158d60 100644
--- a/src/example/CMakeLists.txt
+++ b/src/example/CMakeLists.txt
@@ -24,3 +24,6 @@ add_example(rendering)
add_example(asset_manager)
add_example(particle)
add_example(physics)
+add_example(savemgr)
+add_example(proxy)
+
diff --git a/src/example/proxy.cpp b/src/example/proxy.cpp
new file mode 100644
index 0000000..7e2efa5
--- /dev/null
+++ b/src/example/proxy.cpp
@@ -0,0 +1,47 @@
+/** \file
+ *
+ * Standalone example for usage of the proxy type
+ */
+
+#include <crepe/api/Config.h>
+#include <crepe/util/log.h>
+#include <crepe/Proxy.h>
+
+using namespace std;
+using namespace crepe;
+using namespace crepe::util;
+
+template <typename T>
+class MyProxyHandler : public ProxyHandler<T> {
+public:
+ virtual void set(const T & val) {
+ dbg_logf("set %s", to_string(val).c_str());
+ this->val = val;
+ }
+
+ virtual const T & get() {
+ dbg_logf("get %s", to_string(this->val).c_str());
+ return this->val;
+ }
+
+private:
+ T val = 0;
+};
+
+void test_ro(const int & val) { }
+void test_rw(int & val) { }
+
+int main() {
+ auto & cfg = api::Config::get_instance();
+ cfg.log.level = util::LogLevel::DEBUG;
+
+ Proxy<int> val(make_unique<MyProxyHandler<int>>());
+
+ val = 54;
+
+ test_ro(val); // this is allowed
+ // test_rw(val); // this should throw a compile error
+
+ return 0;
+}
+
diff --git a/src/example/savemgr.cpp b/src/example/savemgr.cpp
new file mode 100644
index 0000000..810947d
--- /dev/null
+++ b/src/example/savemgr.cpp
@@ -0,0 +1,27 @@
+/** \file
+ *
+ * Standalone example for usage of the save manager
+ */
+
+#include <cassert>
+#include <crepe/util/log.h>
+#include <crepe/api/SaveManager.h>
+
+using namespace crepe;
+using namespace crepe::api;
+using namespace crepe::util;
+
+int main() {
+ const char * key = "mygame.test";
+ SaveManager & mgr = SaveManager::get_instance();
+
+ auto & prop = mgr.get<unsigned int>(key, 1);
+ prop = 2;
+
+ mgr.set<unsigned int>(key, 3);
+
+ assert(true == mgr.has(key));
+
+ return 0;
+}
+