diff options
Diffstat (limited to 'src/example')
-rw-r--r-- | src/example/CMakeLists.txt | 4 | ||||
-rw-r--r-- | src/example/db.cpp | 30 | ||||
-rw-r--r-- | src/example/proxy.cpp | 47 | ||||
-rw-r--r-- | src/example/savemgr.cpp | 47 |
4 files changed, 128 insertions, 0 deletions
diff --git a/src/example/CMakeLists.txt b/src/example/CMakeLists.txt index fea6f60..9698c41 100644 --- a/src/example/CMakeLists.txt +++ b/src/example/CMakeLists.txt @@ -24,3 +24,7 @@ add_example(rendering) add_example(asset_manager) add_example(particle) add_example(physics) +add_example(savemgr) +add_example(proxy) +add_example(db) + diff --git a/src/example/db.cpp b/src/example/db.cpp new file mode 100644 index 0000000..b1ab196 --- /dev/null +++ b/src/example/db.cpp @@ -0,0 +1,30 @@ +#include <crepe/DB.h> +#include <crepe/api/Config.h> +#include <crepe/util/log.h> + +using namespace crepe; +using namespace std; + +// run before main +static auto _ = [] () { + auto & cfg = api::Config::get_instance(); + cfg.log.level = util::LogLevel::TRACE; + return 0; +}(); + +int main() { + dbg_trace(); + + DB db("file.db"); + + const char * test_key = "test-key"; + string test_data = "Hello world!"; + + dbg_logf("DB has key = %d", db.has(test_key)); + + db.set(test_key, test_data); + + dbg_logf("key = \"%s\"", db.get(test_key).c_str()); + + return 0; +} diff --git a/src/example/proxy.cpp b/src/example/proxy.cpp new file mode 100644 index 0000000..0be4fac --- /dev/null +++ b/src/example/proxy.cpp @@ -0,0 +1,47 @@ +/** \file + * + * Standalone example for usage of the proxy type + */ + +#include "ValueBroker.h" +#include <crepe/api/Config.h> +#include <crepe/util/log.h> +#include <crepe/util/Proxy.h> + +using namespace std; +using namespace crepe; +using namespace crepe::util; + +void test_ro_ref(const int & val) { } +void test_rw_ref(int & val) { } +void test_ro_val(int val) { } + +int main() { + auto & cfg = api::Config::get_instance(); + cfg.log.level = util::LogLevel::DEBUG; + + int real_value = 0; + + ValueBroker<int> broker { + [&real_value] (const int & target) { + dbg_logf("set %s to %s", to_string(real_value).c_str(), to_string(target).c_str()); + real_value = target; + }, + [&real_value] () -> const int & { + dbg_logf("get %s", to_string(real_value).c_str()); + return real_value; + }, + }; + + Proxy<int> proxy { broker }; + + broker.set(54); + proxy = 84; + + test_ro_ref(proxy); // this is allowed + // test_rw_ref(proxy); // this should throw a compile error + test_ro_val(proxy); + + return 0; +} + diff --git a/src/example/savemgr.cpp b/src/example/savemgr.cpp new file mode 100644 index 0000000..6d011e5 --- /dev/null +++ b/src/example/savemgr.cpp @@ -0,0 +1,47 @@ +/** \file + * + * Standalone example for usage of the save manager + */ + +#include <cassert> +#include <crepe/util/log.h> +#include <crepe/util/Proxy.h> +#include <crepe/api/SaveManager.h> +#include <crepe/api/Config.h> + +using namespace crepe; +using namespace crepe::api; +using namespace crepe::util; + +// unrelated setup code +int _ = [] () { + // make sure all log messages get printed + auto & cfg = Config::get_instance(); + cfg.log.level = util::LogLevel::TRACE; + + return 0; // satisfy compiler +} (); + +int main() { + const char * key = "mygame.test"; + + SaveManager & mgr = SaveManager::get_instance(); + + dbg_logf("has key = %s", mgr.has(key) ? "true" : "false"); + ValueBroker<int> prop = mgr.get<int>(key, 0); + Proxy<int> val = mgr.get<int>(key, 0); + + dbg_logf("val = %d", mgr.get<int>(key).get()); + prop.set(1); + dbg_logf("val = %d", mgr.get<int>(key).get()); + val = 2; + dbg_logf("val = %d", mgr.get<int>(key).get()); + mgr.set<int>(key, 3); + dbg_logf("val = %d", mgr.get<int>(key).get()); + + dbg_logf("has key = %s", mgr.has(key) ? "true" : "false"); + assert(true == mgr.has(key)); + + return 0; +} + |