# HG changeset patch # User David Demelier # Date 1634901991 -7200 # Node ID 1f9db69b347b7d358810aa6372761d4f4407a48a # Parent 10b9d53ae4c5cd49c2a0a56704fac98dbf4d5153 js: add panic bindings diff -r 10b9d53ae4c5 -r 1f9db69b347b src/libmlk-core-js/CMakeLists.txt --- a/src/libmlk-core-js/CMakeLists.txt Fri Oct 22 12:59:32 2021 +0200 +++ b/src/libmlk-core-js/CMakeLists.txt Fri Oct 22 13:26:31 2021 +0200 @@ -38,6 +38,8 @@ ${libmlk-core-js_SOURCE_DIR}/core/js-music.h ${libmlk-core-js_SOURCE_DIR}/core/js-painter.c ${libmlk-core-js_SOURCE_DIR}/core/js-painter.h + ${libmlk-core-js_SOURCE_DIR}/core/js-panic.c + ${libmlk-core-js_SOURCE_DIR}/core/js-panic.h ${libmlk-core-js_SOURCE_DIR}/core/js-sound.c ${libmlk-core-js_SOURCE_DIR}/core/js-sound.h ${libmlk-core-js_SOURCE_DIR}/core/js-sprite.c diff -r 10b9d53ae4c5 -r 1f9db69b347b src/libmlk-core-js/core/js-core.c --- a/src/libmlk-core-js/core/js-core.c Fri Oct 22 12:59:32 2021 +0200 +++ b/src/libmlk-core-js/core/js-core.c Fri Oct 22 13:26:31 2021 +0200 @@ -33,6 +33,9 @@ duk_push_pointer(ctx, vfs); duk_put_prop_string(ctx, -2, VFS); duk_pop(ctx); + + duk_push_object(ctx); + duk_put_global_string(ctx, "Mlk"); } struct vfs * @@ -46,6 +49,6 @@ duk_get_prop_string(ctx, -1, VFS); vfs = duk_to_pointer(ctx, -1); duk_pop(ctx); - + return vfs; } diff -r 10b9d53ae4c5 -r 1f9db69b347b src/libmlk-core-js/core/js-panic.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/libmlk-core-js/core/js-panic.c Fri Oct 22 13:26:31 2021 +0200 @@ -0,0 +1,49 @@ +/* + * js-panic.c -- core panic binding + * + * Copyright (c) 2020-2021 David Demelier + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include + +#include + +#include "js-panic.h" + +static duk_ret_t +Mlk_panic(duk_context *ctx) +{ + if (duk_get_top(ctx) >= 1) + panicf("%s", duk_to_string(ctx, 0)); + else + panic(); + + return 0; +} + +static const duk_function_list_entry functions[] = { + { "panic", Mlk_panic, DUK_VARARGS }, + { NULL, NULL, 0 } +}; + +void +js_panic_bind(duk_context *ctx) +{ + assert(ctx); + + duk_get_global_string(ctx, "Mlk"); + duk_put_function_list(ctx, -1, functions); + duk_pop(ctx); +} \ No newline at end of file diff -r 10b9d53ae4c5 -r 1f9db69b347b src/libmlk-core-js/core/js-panic.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/libmlk-core-js/core/js-panic.h Fri Oct 22 13:26:31 2021 +0200 @@ -0,0 +1,27 @@ +/* + * js-panic.h -- core panic binding + * + * Copyright (c) 2020-2021 David Demelier + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef MLK_CORE_JS_PANIC_H +#define MLK_CORE_JS_PANIC_H + +#include + +void +js_panic_bind(duk_context *); + +#endif /* !MLK_CORE_JS_PANIC_H */ diff -r 10b9d53ae4c5 -r 1f9db69b347b src/mlk-run/main.c --- a/src/mlk-run/main.c Fri Oct 22 12:59:32 2021 +0200 +++ b/src/mlk-run/main.c Fri Oct 22 13:26:31 2021 +0200 @@ -35,6 +35,7 @@ #include #include #include +#include #include #include #include @@ -58,15 +59,18 @@ static void core_bind(duk_context *ctx) { + /* Brings Mlk global object. */ + js_core_bind(ctx, &vfs); + js_animation_bind(ctx); js_clock_bind(ctx); js_color_bind(ctx); - js_core_bind(ctx, &vfs); js_event_bind(ctx); js_font_bind(ctx); js_game_bind(ctx); js_music_bind(ctx); js_painter_bind(ctx); + js_panic_bind(ctx); js_sound_bind(ctx); js_sprite_bind(ctx); js_state_bind(ctx);