From 0887eb1f80c69098ef300c937eb22592dad9c7b4 Mon Sep 17 00:00:00 2001 From: Luis Michaelis Date: Sun, 26 Jan 2025 08:41:02 +0100 Subject: [PATCH] feat(DaedalusScript): add `getInstance` for `DaedalusSymbol` --- include/zenkit-capi/DaedalusScript.h | 1 + src/DaedalusScript.cc | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/include/zenkit-capi/DaedalusScript.h b/include/zenkit-capi/DaedalusScript.h index 78fa5b1..ac4bde3 100644 --- a/include/zenkit-capi/DaedalusScript.h +++ b/include/zenkit-capi/DaedalusScript.h @@ -137,6 +137,7 @@ ZKC_API ZkString ZkDaedalusSymbol_getString(ZkDaedalusSymbol const* slf, ZkDaedalusInstance const* context); ZKC_API float ZkDaedalusSymbol_getFloat(ZkDaedalusSymbol const* slf, uint16_t index, ZkDaedalusInstance const* context); ZKC_API int32_t ZkDaedalusSymbol_getInt(ZkDaedalusSymbol const* slf, uint16_t index, ZkDaedalusInstance const* context); +ZKC_API ZkDaedalusInstance* ZkDaedalusSymbol_getInstance(ZkDaedalusSymbol* slf); ZKC_API void ZkDaedalusSymbol_setString(ZkDaedalusSymbol* slf, ZkString value, uint16_t index, ZkDaedalusInstance* context); ZKC_API void ZkDaedalusSymbol_setFloat(ZkDaedalusSymbol* slf, float value, uint16_t index, ZkDaedalusInstance* context); diff --git a/src/DaedalusScript.cc b/src/DaedalusScript.cc index 70470d6..5cd4073 100644 --- a/src/DaedalusScript.cc +++ b/src/DaedalusScript.cc @@ -101,6 +101,17 @@ int32_t ZkDaedalusSymbol_getInt(ZkDaedalusSymbol const* slf, uint16_t index, ZkD ZKC_RETURN_CATCH(slf->get_int(index, context ? context->get() : nullptr)); } +ZkDaedalusInstance* ZkDaedalusSymbol_getInstance(ZkDaedalusSymbol* slf) { + ZKC_CHECK_NULL(slf, slf); + + try { + auto& instance = slf->get_instance(); + return new ZkDaedalusInstance(instance); + } catch (std::runtime_error& e) { + return nullptr; + } +} + void ZkDaedalusSymbol_setString(ZkDaedalusSymbol* slf, ZkString value, uint16_t index, ZkDaedalusInstance* context) { ZKC_CHECK_NULLV(slf, value); ZKC_CATCH(slf->set_string(value, index, context ? context->get() : nullptr));