mirror of
https://github.com/ChaiScript/ChaiScript.git
synced 2026-06-15 08:26:16 +08:00
Replace the static ChaiScript singleton in the Emscripten wrapper with a handle-based registry symmetric to the existing State registry. JS callers now create an engine with chaiscript_create(), pass the resulting handle to the eval/state helpers, and release it with chaiscript_destroy(). Multiple independent engines are now possible, and a state snapshot can be restored onto any engine. Updated the playground HTML and the three native regression tests to exercise the new API. Requested by @lefticus in PR #699 review. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
29 lines
1.1 KiB
C++
29 lines
1.1 KiB
C++
// This file is distributed under the BSD License.
|
|
// See "license.txt" for details.
|
|
// Copyright 2019, Rob Loach (https://github.com/RobLoach/ChaiScript.js)
|
|
// Copyright 2009-2018, Jason Turner (jason@emptycrate.com)
|
|
// http://www.chaiscript.com
|
|
//
|
|
// Emscripten/WebAssembly wrapper for ChaiScript.
|
|
// Based on work by Rob Loach: https://github.com/RobLoach/ChaiScript.js
|
|
|
|
#include "chaiscript_eval.hpp"
|
|
|
|
#ifdef __EMSCRIPTEN__
|
|
#include <emscripten/bind.h>
|
|
|
|
EMSCRIPTEN_BINDINGS(chaiscript) {
|
|
emscripten::function("create", &chaiscript_create);
|
|
emscripten::function("destroy", &chaiscript_destroy);
|
|
emscripten::function("eval", &chaiscript_eval);
|
|
emscripten::function("evalString", &chaiscript_eval_string);
|
|
emscripten::function("evalBool", &chaiscript_eval_bool);
|
|
emscripten::function("evalInt", &chaiscript_eval_int);
|
|
emscripten::function("evalFloat", &chaiscript_eval_float);
|
|
emscripten::function("evalDouble", &chaiscript_eval_double);
|
|
emscripten::function("saveState", &chaiscript_save_state);
|
|
emscripten::function("restoreState", &chaiscript_restore_state);
|
|
emscripten::function("releaseState", &chaiscript_release_state);
|
|
}
|
|
#endif
|