From 6df48effc3dadf14c82d05fd39771a6681581772 Mon Sep 17 00:00:00 2001 From: Bryan Roe Date: Fri, 5 Feb 2021 19:56:34 -0800 Subject: [PATCH] Updated some properties of MeshAgent object to be enumerable --- meshcore/agentcore.c | 12 ++++++------ microscript/ILibDuktape_Helpers.c | 8 ++++---- microscript/ILibDuktape_Helpers.h | 8 +++++--- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/meshcore/agentcore.c b/meshcore/agentcore.c index ff76a36..270aa4e 100644 --- a/meshcore/agentcore.c +++ b/meshcore/agentcore.c @@ -1861,14 +1861,14 @@ void ILibDuktape_MeshAgent_PUSH(duk_context *ctx, void *chain) ILibDuktape_EventEmitter_CreateEventEx(emitter, "DBError"); ILibDuktape_EventEmitter_AddHook(emitter, "Connected", ILibDuktape_MeshAgent_ConnectedHook); - ILibDuktape_CreateEventWithGetter(ctx, "ServerInfo", ILibDuktape_MeshAgent_ServerInfo); + ILibDuktape_CreateEventWithGetter_SetEnumerable(ctx, "ServerInfo", ILibDuktape_MeshAgent_ServerInfo,1); - ILibDuktape_CreateEventWithGetter(ctx, "isControlChannelConnected", ILibDuktape_MeshAgent_isControlChannelConnected); + ILibDuktape_CreateEventWithGetter_SetEnumerable(ctx, "isControlChannelConnected", ILibDuktape_MeshAgent_isControlChannelConnected,1); ILibDuktape_EventEmitter_AddHook(emitter, "Ready", ILibDuktape_MeshAgent_Ready); - ILibDuktape_CreateEventWithGetter(ctx, "ConnectedServer", ILibDuktape_MeshAgent_ConnectedServer); - ILibDuktape_CreateEventWithGetter(ctx, "ServerUrl", ILibDuktape_MeshAgent_ServerUrl); - ILibDuktape_CreateEventWithGetter(ctx, "ServerIP", ILibDuktape_MeshAgent_ServerIP); + ILibDuktape_CreateEventWithGetter_SetEnumerable(ctx, "ConnectedServer", ILibDuktape_MeshAgent_ConnectedServer,1); + ILibDuktape_CreateEventWithGetter_SetEnumerable(ctx, "ServerUrl", ILibDuktape_MeshAgent_ServerUrl,1); + ILibDuktape_CreateEventWithGetter_SetEnumerable(ctx, "ServerIP", ILibDuktape_MeshAgent_ServerIP,1); ILibDuktape_CreateInstanceMethod(ctx, "getRemoteDesktopStream", ILibDuktape_MeshAgent_getRemoteDesktop, DUK_VARARGS); ILibDuktape_CreateInstanceMethod(ctx, "AddCommandHandler", ILibDuktape_MeshAgent_AddCommandHandler, 1); ILibDuktape_CreateInstanceMethod(ctx, "AddConnectHandler", ILibDuktape_MeshAgent_AddConnectHandler, 1); @@ -1878,7 +1878,7 @@ void ILibDuktape_MeshAgent_PUSH(duk_context *ctx, void *chain) ILibDuktape_CreateInstanceMethod(ctx, "restartCore", ILibDuktape_MeshAgent_dumpCoreModule, 0); ILibDuktape_CreateInstanceMethod(ctx, "getStartupOptions", ILibDuktape_MeshAgent_getStartupOptions, 0); ILibDuktape_CreateEventWithGetter(ctx, "coreHash", ILibDuktape_MeshAgent_coreHash); - ILibDuktape_CreateEventWithGetter(ctx, "updatesEnabled", ILibDuktape_MeshAgent_updatesEnabled); + ILibDuktape_CreateEventWithGetter_SetEnumerable(ctx, "updatesEnabled", ILibDuktape_MeshAgent_updatesEnabled, 1); ILibDuktape_CreateInstanceMethod(ctx, "log", ILibDuktape_MeshAgent_log, 1); ILibDuktape_CreateEventWithGetter(ctx, "controlChannelDebug", ILibDuktape_MeshAgent_controlChannelDebug); ILibDuktape_CreateInstanceMethod(ctx, "DataPing", ILibDuktape_MeshAgent_DataPing, DUK_VARARGS); diff --git a/microscript/ILibDuktape_Helpers.c b/microscript/ILibDuktape_Helpers.c index 7a412e7..b0f7908 100644 --- a/microscript/ILibDuktape_Helpers.c +++ b/microscript/ILibDuktape_Helpers.c @@ -497,11 +497,11 @@ void ILibDuktape_CreateEventWithGetterEx(duk_context *ctx, char *propName, void duk_put_prop_string(ctx, -2, "\xFF_return"); // [obj][prop][func] duk_def_prop(ctx, -3, DUK_DEFPROP_FORCE | DUK_DEFPROP_HAVE_GETTER); // [obj] } -void ILibDuktape_CreateEventWithGetter(duk_context *ctx, char *propName, duk_c_function getterMethod) +void ILibDuktape_CreateEventWithGetter_SetEnumerable(duk_context *ctx, char *propName, duk_c_function getterMethod, int enumerable) { duk_push_string(ctx, propName); // [obj][prop] duk_push_c_function(ctx, getterMethod, 1); // [obj][prop][getFunc] - duk_def_prop(ctx, -3, DUK_DEFPROP_FORCE | DUK_DEFPROP_HAVE_GETTER); // [obj] + duk_def_prop(ctx, -3, DUK_DEFPROP_FORCE | DUK_DEFPROP_HAVE_GETTER | (enumerable ? DUK_DEFPROP_SET_ENUMERABLE : 0)); // [obj] } void ILibDuktape_CreateEventWithGetterAndCustomProperty(duk_context *ctx, char *customPropName, char *propName, duk_c_function getterMethod) { @@ -891,14 +891,14 @@ duk_ret_t ILibDuktape_ReadonlyProperty_Get(duk_context *ctx) duk_get_prop_string(ctx, -1, "\xFF_PropValue"); // [getFunc][value] return 1; } -void ILibDuktape_CreateReadonlyProperty(duk_context *ctx, char *propName) +void ILibDuktape_CreateReadonlyProperty_SetEnumerable(duk_context *ctx, char *propName, int enumerable) { // [obj][value] duk_push_string(ctx, propName); // [obj][value][prop] duk_swap_top(ctx, -2); // [obj][prop][value] duk_push_c_function(ctx, ILibDuktape_ReadonlyProperty_Get, 1); // [obj][prop][value][getFunc] duk_swap_top(ctx, -2); // [obj][prop][getFunc][value] duk_put_prop_string(ctx, -2, "\xFF_PropValue"); // [obj][prop][getFunc] - duk_def_prop(ctx, -3, DUK_DEFPROP_FORCE | DUK_DEFPROP_HAVE_GETTER); // [obj] + duk_def_prop(ctx, -3, DUK_DEFPROP_FORCE | DUK_DEFPROP_HAVE_GETTER | (enumerable ? DUK_DEFPROP_SET_ENUMERABLE : 0)); // [obj] } void *ILibDuktape_Memory_Alloc(duk_context *ctx, duk_size_t size) { diff --git a/microscript/ILibDuktape_Helpers.h b/microscript/ILibDuktape_Helpers.h index 9c0f888..e6bf335 100644 --- a/microscript/ILibDuktape_Helpers.h +++ b/microscript/ILibDuktape_Helpers.h @@ -174,7 +174,8 @@ duk_ret_t ILibDuktape_Error(duk_context *ctx, char *format, ...); typedef void(*ILibDuktape_IndependentFinalizerHandler)(duk_context *ctx, void *object); int ILibDuktape_Process_GetExitCode(duk_context *ctx); -void ILibDuktape_CreateEventWithGetter(duk_context *ctx, char *propName, duk_c_function getterMethod); +void ILibDuktape_CreateEventWithGetter_SetEnumerable(duk_context *ctx, char *propName, duk_c_function getterMethod, int enumerable); +#define ILibDuktape_CreateEventWithGetter(ctx, propName, getterFunc) ILibDuktape_CreateEventWithGetter_SetEnumerable(ctx, propName, getterFunc, 0) void ILibDuktape_CreateEventWithGetterEx(duk_context *ctx, char *propName, void *heapptr); void ILibDuktape_CreateEventWithGetterAndCustomProperty(duk_context *ctx, char *customPropName, char *propName, duk_c_function getterMethod); void ILibDuktape_CreateEventWithSetter(duk_context *ctx, char *propName, char *propNamePtr, void **hptr); @@ -195,8 +196,9 @@ duk_idx_t duk_push_int_ex(duk_context *ctx, duk_int_t val); void ILibDuktape_CreateProperty_InstanceMethod(duk_context *ctx, char *methodName, duk_c_function impl, duk_idx_t argCount); void ILibDuktape_CreateProperty_InstanceMethodEx(duk_context *ctx, char *methodName, void *funcHeapPtr); -void ILibDuktape_CreateReadonlyProperty(duk_context *ctx, char *propName); -#define ILibDuktape_CreateReadonlyProperty_int(ctx, propName, propValue) duk_push_int(ctx, propValue);ILibDuktape_CreateReadonlyProperty(ctx, propName) +#define ILibDuktape_CreateReadonlyProperty(ctx, propName) ILibDuktape_CreateReadonlyProperty_SetEnumerable(ctx, propName, 1) +void ILibDuktape_CreateReadonlyProperty_SetEnumerable(duk_context *ctx, char *propName, int enumerable); +#define ILibDuktape_CreateReadonlyProperty_int(ctx, propName, propValue) duk_push_int(ctx, propValue);ILibDuktape_CreateReadonlyProperty_SetEnumerable(ctx, propName, 1) void ILibDuktape_CreateFinalizerEx(duk_context *ctx, duk_c_function func, int singleton); #define ILibDuktape_CreateFinalizer(ctx, func) ILibDuktape_CreateFinalizerEx(ctx, func, 0)