@@ -157,15 +157,15 @@ ZkDaedalusInstance* ZkDaedalusVm_popInstance(ZkDaedalusVm* slf) {
157
157
ZKC_CHECK_NULL (slf);
158
158
159
159
try {
160
- auto instance = slf->handle .pop_instance ();
161
- if (instance == nullptr ) {
162
- return nullptr ;
163
- }
164
- ZKC_RETURN_CATCH (new ZkDaedalusInstance (instance));
165
- } catch (zenkit::DaedalusScriptError const & e) {
166
- ZKC_LOG_ERROR (" Failed to pop instance: %s" , e.what ());
167
- return nullptr ;
168
- }
160
+ auto instance = slf->handle .pop_instance ();
161
+ if (instance == nullptr ) {
162
+ return nullptr ;
163
+ }
164
+ ZKC_RETURN_CATCH (new ZkDaedalusInstance (instance));
165
+ } catch (zenkit::DaedalusScriptError const & e) {
166
+ ZKC_LOG_ERROR (" Failed to pop instance: %s" , e.what ());
167
+ return nullptr ;
168
+ }
169
169
}
170
170
171
171
ZkDaedalusInstance* ZkDaedalusVm_getGlobalSelf (ZkDaedalusVm* slf) {
@@ -439,6 +439,15 @@ void ZkDaedalusVm_registerExternal(ZkDaedalusVm* slf,
439
439
slf->externals .insert_or_assign (sym->index (), [cb, ctx](ZkDaedalusVm* vm) { cb (ctx, vm); });
440
440
}
441
441
442
+ void ZkDaedalusVm_overrideFunction (ZkDaedalusVm* slf, char const * name, ZkDaedalusVmExternalCallback cb, void * ctx) {
443
+ ZKC_TRACE_FN ();
444
+ ZKC_CHECK_NULLV (slf, name, cb);
445
+ slf->handle .override_function (name, [slf, ctx, cb](zenkit::DaedalusVm&) -> zenkit::DaedalusNakedCall {
446
+ cb (ctx, slf);
447
+ return {};
448
+ });
449
+ }
450
+
442
451
void ZkDaedalusVm_registerExternalDefault (ZkDaedalusVm* slf, ZkDaedalusVmExternalDefaultCallback cb, void * ctx) {
443
452
ZKC_TRACE_FN ();
444
453
ZKC_CHECK_NULLV (slf);
0 commit comments