diff options
Diffstat (limited to 'src/example/proxy.cpp')
-rw-r--r-- | src/example/proxy.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/example/proxy.cpp b/src/example/proxy.cpp new file mode 100644 index 0000000..9f54f96 --- /dev/null +++ b/src/example/proxy.cpp @@ -0,0 +1,46 @@ +/** \file + * + * Standalone example for usage of the proxy type + */ + +#include <crepe/ValueBroker.h> +#include <crepe/api/Config.h> +#include <crepe/util/log.h> +#include <crepe/util/Proxy.h> + +using namespace std; +using namespace crepe; + +void test_ro_ref(const int & val) { } +void test_rw_ref(int & val) { } +void test_ro_val(int val) { } + +int main() { + auto & cfg = Config::get_instance(); + cfg.log.level = 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; +} + |